home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / catopts.i < prev    next >
Text File  |  1997-10-26  |  87KB  |  2,136 lines

  1. IMPLEMENTATION MODULE CatOpts;
  2.  
  3. (*==============================================================*
  4.  * Modul:               CAT Optionenmodul,                      *
  5.  * Autor:               Dirk Steins                             *
  6.  * erstellt am:         10.12.1993                              *
  7.  * letzte Žnderung am:  10.12.1993                              *
  8.  * Version:             0.1                                     *
  9.  * Interne Version:     V#0001                                  *
  10.  *==============================================================*
  11.  
  12.  *----------------------------------------------------------------------------
  13.  * Datum    Vers. Autor  Žnderung (Arbeitsbericht)
  14.  *----------------------------------------------------------------------------
  15.  * 10.12.93 0.1   DS     Erste Implementation erstellt
  16.  *                       Optionsdialoge aus CAT.M hierhin verschoben
  17.  *----------------------------------------------------------------------------
  18.  *)
  19.  
  20. FROM SYSTEM IMPORT ADDRESS, ADR, TSIZE;
  21.  
  22. (* MM2-Module *)
  23. IMPORT Strings;
  24. IMPORT StrConv;
  25. FROM Storage    IMPORT ALLOCATE, DEALLOCATE;
  26.  
  27. (* Magic-Module *)
  28. IMPORT MagicStrings, MagicAES;
  29. IMPORT mtUtils, mtDials, mtAlerts, mtDir, mtPopups, mtAppl,
  30.        mtTextfiles;
  31.  
  32. (* CAT-Module *)
  33. IMPORT CatTypes;
  34. IMPORT CatGlobal;
  35. IMPORT WdwManager;
  36. IMPORT MausTauschrsc;
  37. IMPORT MTE;
  38. IMPORT CatEdit;
  39. IMPORT grin;
  40. IMPORT Printer;
  41. IMPORT CatHelp;
  42. IMPORT EditTypes;
  43. IMPORT VDIUtil;
  44. IMPORT ConfVars;
  45. IMPORT Varnames;
  46. IMPORT InfoDlg;
  47. IMPORT UserInformation;
  48. IMPORT MTPaths;
  49. IMPORT MsgWindow;
  50. IMPORT msgList;
  51. IMPORT treeList;
  52. IMPORT Protokoll;
  53.  
  54. IMPORT WinDials;
  55.  
  56. FROM Void   IMPORT v;
  57.  
  58. (* Konstantendefinitionen *)
  59. CONST   CR      = 15C;
  60.         LF      = 12C;
  61.  
  62.         wrongWildAlert  = '[2][CAT:|Die Wildcardzeichen sind|nicht korrekt!|Bitte korrigieren Sie|Ihre Eingaben.][[OK]';
  63.         wrongWildReplace  = '[3][CAT:|Die Zuordnung der Wildcards|ist nicht eindeutig!][[Abbruch]';
  64.  
  65. (* Typdefinitionen *)
  66.  
  67. TYPE Trick =  POINTER TO RECORD
  68.                 CASE : BOOLEAN OF
  69.                   TRUE:  wert: INTEGER;|
  70.                   FALSE: hi: CHAR;
  71.                          lo: CHAR;|
  72.                 END;
  73.               END;
  74.  
  75.  
  76. (* Globale Variablen *)
  77. VAR
  78.     (* Such- und Ersetzeinstellungen  *)
  79.     replaceOpts,
  80.     searchOpts      : RECORD
  81.                         isSet,
  82.                         doIt,
  83.                         ignoreCase,
  84.                         askBack,
  85.                         onlyWord:         BOOLEAN;
  86.                         theSearchWdw:     INTEGER;
  87.                         direction:        EditTypes.searchDir;
  88.                         count:            EditTypes.searchCount;
  89.                         pos:              EditTypes.searchPos;
  90.                         number:           INTEGER;
  91.                         searchStr,
  92.                         replaceStr:       CatTypes.String255;
  93.                       END;
  94.  
  95. PROCEDURE InitDial (tree: ADDRESS) : BOOLEAN;
  96. (* Ruft NewDial auf und zentriert ggf. den Dialog danach *)
  97. BEGIN
  98.   IF ~mtDials.NewDial(tree) THEN 
  99.     MTE.noMemAlert();
  100.     RETURN FALSE 
  101.   END;
  102.   mtDials.DialCenter (tree, mtDials.CSCREEN, 0, 0, v.r);  
  103.   RETURN TRUE;
  104. END InitDial;
  105.  
  106. PROCEDURE GetItem(dial : ADDRESS; item : INTEGER):BOOLEAN;
  107. BEGIN
  108.   RETURN mtUtils.InState(dial, item, MagicAES.SELECTED);
  109. END GetItem;
  110.  
  111. PROCEDURE SetItem(dial : ADDRESS; item : INTEGER; b : BOOLEAN);
  112. BEGIN
  113.   mtUtils.SetState (dial, item, MagicAES.SELECTED, b);
  114. END SetItem;
  115.  
  116. PROCEDURE searchButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  117.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  118. VAR   allChar,
  119.       oneChar:          CHAR;
  120. BEGIN
  121.   mtUtils.ExclState(tree, button, MagicAES.SELECTED);
  122.   IF button = MausTauschrsc.srok
  123.   THEN
  124.     mtUtils.ObjcString (tree, MausTauschrsc.sqall, allChar);
  125.     mtUtils.ObjcString (tree, MausTauschrsc.sqone, oneChar);
  126.     IF (allChar = oneChar) OR (allChar = 0c) OR (oneChar = 0c)
  127.     THEN
  128.       MTE.info (wrongWildAlert);
  129.       WinDials.WinDialDraw (tree, button, 8, v.r, FALSE);
  130.       RETURN FALSE
  131.     END;
  132.     (* String auslesen *)
  133.     WITH searchOpts DO
  134.       mtUtils.ObjcString (tree, MausTauschrsc.ssuchstr, searchStr);
  135.       (* Jetzt Suchstring berprfen, ob nur Wildcards drin sind *)
  136.       IF MagicStrings.Length (searchStr) = 0
  137.       THEN 
  138.         (* Leerer String geht auch *)
  139.         RETURN TRUE
  140.       END;
  141.       (* Jetzt der eigentliche Test *)
  142.       WHILE ((searchStr [0] = allChar) OR (searchStr[0] = oneChar)) & 
  143.             (MagicStrings.Length (searchStr) > 0) DO
  144.         MagicStrings.Delete (searchStr, 0, 1);
  145.         IF MagicStrings.Length (searchStr) = 0
  146.         THEN
  147.           MTE.info (MTE.noSearchStr);
  148.           WinDials.WinDialDraw (tree, button, 8, v.r, FALSE);
  149.         END;
  150.       END;
  151.       IF MagicStrings.Length (searchStr) > 0 THEN RETURN TRUE; END;
  152.     END;
  153.   ELSIF button = MausTauschrsc.findhelp
  154.   THEN
  155.     CatHelp.DoHelp (CatHelp.textsearch);
  156.   ELSE
  157.     RETURN TRUE;
  158.   END;
  159.   WinDials.WinDialDraw (tree, button, 8, v.r, FALSE);
  160.   RETURN FALSE;
  161. END searchButton;
  162.  
  163. PROCEDURE searchGetSetValues (tree: ADDRESS; private: ADDRESS; 
  164.                               set: BOOLEAN; exit: INTEGER);
  165. VAR   allChar,
  166.       oneChar:          CHAR;
  167. BEGIN
  168.   IF set
  169.   THEN
  170.     CatEdit.GetWildChars (oneChar, allChar);
  171.     mtUtils.SetObjcString (tree, MausTauschrsc.sqall, allChar);
  172.     mtUtils.SetObjcString (tree, MausTauschrsc.sqone, oneChar);
  173.     mtUtils.SetObjcString (tree, MausTauschrsc.ssuchstr, searchOpts.searchStr);
  174.   ELSE
  175.     exit := INTEGER(BITSET(exit) - {15});    
  176.     mtUtils.ExclState(tree, exit, MagicAES.SELECTED);
  177.     IF exit = MausTauschrsc.srok
  178.     THEN
  179.       WITH searchOpts DO 
  180.         isSet := TRUE;
  181.         (* Strings auslesen *)
  182.         ignoreCase := GetItem (tree, MausTauschrsc.scase);
  183.         onlyWord   := GetItem (tree, MausTauschrsc.sword);
  184.         (* Startposition suchen *)
  185.         IF GetItem (tree, MausTauschrsc.sfromtop)
  186.         THEN pos := EditTypes.fromStart;
  187.         ELSIF GetItem (tree, MausTauschrsc.sfromcur)
  188.         THEN pos := EditTypes.fromPos;
  189.         END;
  190.         (* Anzahl feststellen *)
  191.         count := EditTypes.searchOne;
  192.         (* letzte Parameter *)
  193.         mtUtils.ObjcString (tree, MausTauschrsc.sqall, allChar);
  194.         mtUtils.ObjcString (tree, MausTauschrsc.sqone, oneChar);
  195.         IF (allChar = oneChar) OR (allChar = 0c) OR (oneChar = 0c)
  196.         THEN
  197.           MTE.info (wrongWildAlert);
  198.         ELSE
  199.           CatEdit.SetWildChars (oneChar, allChar);
  200.         END;
  201.         mtUtils.ObjcString (tree, MausTauschrsc.ssuchstr, searchStr);
  202.         IF CatEdit.IsEditTop (theSearchWdw)
  203.         THEN
  204.           doIt := TRUE;
  205.           (*
  206.           v.bool := CatEdit.Search (theSearchWdw, searchStr, pos, direction, count, 1,
  207.                                     ignoreCase, onlyWord, FALSE);
  208.           *)
  209.         END;
  210.       END;
  211.     END;
  212.   END;
  213. END searchGetSetValues;
  214.  
  215. PROCEDURE DoSearch();
  216. VAR   ersetzBox:        mtUtils.tObjcTree;
  217. BEGIN
  218.   ersetzBox := MausTauschrsc.TreeAddr^[MausTauschrsc.findbox];
  219.   IF CatEdit.IsEditTop (WdwManager.ownTopWindow)
  220.   THEN
  221.     searchOpts.theSearchWdw := WdwManager.ownTopWindow;
  222.     searchOpts.doIt := FALSE;
  223.     IF ~WinDials.OpenWinDial (ersetzBox, TRUE, 
  224.                               searchGetSetValues,
  225.                               searchGetSetValues,
  226.                               searchButton,
  227.                               WinDials.defDraw,
  228.                               "",
  229.                               NIL)
  230.     THEN
  231.       MTE.noWinDialAlert();
  232.       RETURN
  233.     END;
  234.     WinDials.WinDialHandleEvents();
  235.     WITH searchOpts DO
  236.       IF doIt 
  237.       THEN
  238.         WdwManager.HandlePendingEvents ();
  239.         v.bool := CatEdit.Search (theSearchWdw, searchStr, pos, direction, count, 1,
  240.                                   ignoreCase, onlyWord, FALSE);
  241.       END;
  242.     END;
  243.   END;
  244. END DoSearch;
  245.  
  246. PROCEDURE DoSearchAgain (kstate: BITSET);
  247.   VAR sDir: EditTypes.searchDir;
  248. BEGIN
  249.   IF CatEdit.IsEditTop (WdwManager.ownTopWindow)
  250.   THEN
  251.     WITH searchOpts DO
  252.       pos := EditTypes.fromPos;
  253.       IF CatGlobal.WithShift (kstate)
  254.       THEN
  255.         IF direction = EditTypes.forward 
  256.         THEN 
  257.           sDir := EditTypes.backward 
  258.         ELSE
  259.           sDir := EditTypes.forward 
  260.         END;
  261.       ELSE
  262.         sDir := direction;
  263.       END;
  264.       v.bool := CatEdit.Search (WdwManager.ownTopWindow, searchStr, pos, sDir, count, 1,
  265.                                 ignoreCase, onlyWord, TRUE);
  266.     END;
  267.   END;
  268. END DoSearchAgain;
  269.  
  270. PROCEDURE replaceButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  271.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  272. VAR   allChar,
  273.       oneChar:          CHAR;
  274. BEGIN
  275.   button := INTEGER(BITSET(button) - {15});
  276.   CASE button OF
  277.     MausTauschrsc.rgesamt,
  278.     MausTauschrsc.reinmal  : 
  279.                        mtUtils.SetState (tree, MausTauschrsc.rcount, MagicAES.DISABLED, TRUE); 
  280.                        mtUtils.SetFlag (tree, MausTauschrsc.rcount, MagicAES.EDITABLE, FALSE);
  281.                        mtDials.DialDraw (tree, MausTauschrsc.rcount, 0, v.r, FALSE);
  282.                        RETURN FALSE; |
  283.     MausTauschrsc.rnmal: 
  284.                        mtUtils.SetState (tree, MausTauschrsc.rcount, MagicAES.DISABLED, FALSE);
  285.                        mtUtils.SetFlag (tree, MausTauschrsc.rcount, MagicAES.EDITABLE, TRUE);
  286.                        mtDials.DialDraw (tree, MausTauschrsc.rcount, 0, v.r, FALSE);
  287.                        RETURN FALSE; |
  288.     MausTauschrsc.rrok, 
  289.     MausTauschrsc.rrquit: 
  290.                        mtUtils.ExclState(tree, button, MagicAES.SELECTED);
  291.                        IF button = MausTauschrsc.rrok
  292.                        THEN
  293.                          mtUtils.ObjcString (tree, MausTauschrsc.rrqall, allChar);
  294.                          mtUtils.ObjcString (tree, MausTauschrsc.rrqone, oneChar);
  295.                          IF (allChar = oneChar) OR (allChar = 0c) OR (oneChar = 0c)
  296.                          THEN
  297.                            MTE.info (wrongWildAlert);
  298.                            WinDials.WinDialDraw (tree, button, 8, v.r, FALSE);
  299.                            RETURN FALSE
  300.                          END;
  301.                          (* String auslesen *)
  302.                          mtUtils.ObjcString (tree, MausTauschrsc.rsuchstr, replaceOpts.searchStr);
  303.                          (* Jetzt Suchstring berprfen, ob nur Wildcards drin sind *)
  304.                          IF MagicStrings.Length (replaceOpts.searchStr) = 0
  305.                          THEN 
  306.                            (* Leerer String geht auch *)
  307.                            RETURN TRUE
  308.                          END;
  309.                          (* Jetzt der eigentliche Test *)
  310.                          WHILE ((replaceOpts.searchStr [0] = allChar) OR (replaceOpts.searchStr[0] = oneChar)) & 
  311.                                (MagicStrings.Length (replaceOpts.searchStr) > 0) DO
  312.                            MagicStrings.Delete (replaceOpts.searchStr, 0, 1);
  313.                            IF MagicStrings.Length (replaceOpts.searchStr) = 0
  314.                            THEN
  315.                              MTE.info (MTE.noSearchStr);
  316.                              WinDials.WinDialDraw (tree, button, 8, v.r, FALSE);
  317.                            END;
  318.                          END;
  319.                          IF MagicStrings.Length (replaceOpts.searchStr) > 0 THEN RETURN TRUE; END;
  320.                        ELSE
  321.                          RETURN TRUE;
  322.                        END;
  323.                        WinDials.WinDialDraw (tree, button, 8, v.r, FALSE); |
  324.     MausTauschrsc.replhelp:
  325.                        mtUtils.ExclState(tree, button, MagicAES.SELECTED);
  326.                        CatHelp.DoHelp (CatHelp.textrepl);
  327.                        WinDials.WinDialDraw (tree, button, 8, v.r, FALSE); 
  328.   ELSE
  329.   END;  
  330.   RETURN FALSE;
  331. END replaceButton;
  332.  
  333. PROCEDURE replaceGetSetValues (tree: ADDRESS; private: ADDRESS; 
  334.                               set: BOOLEAN; exit: INTEGER);
  335. VAR   allChar,
  336.       oneChar:          CHAR;
  337.       numStr:           ARRAY [0..7] OF CHAR;
  338.       text:             EditTypes.textPtr;
  339.       len:              LONGCARD;
  340. BEGIN
  341.   IF set
  342.   THEN
  343.     WITH replaceOpts DO 
  344.       IF CatEdit.BlockIsMarked (replaceOpts.theSearchWdw)
  345.       THEN
  346.         IF CatEdit.GetBlock (replaceOpts.theSearchWdw, FALSE, FALSE, text, len) & (text # NIL)
  347.         THEN
  348.           Strings.Copy (text^, 0, 39, searchStr, v.bool);
  349.           DEALLOCATE (text, 0);
  350.         END;
  351.       END;
  352.       CatEdit.GetWildChars (oneChar, allChar);
  353.       mtUtils.SetObjcString (tree, MausTauschrsc.rrqall, allChar);
  354.       mtUtils.SetObjcString (tree, MausTauschrsc.rrqone, oneChar);
  355.       mtUtils.SetObjcString (tree, MausTauschrsc.rsuchstr, searchStr);
  356.       mtUtils.SetObjcString (tree, MausTauschrsc.rreplstr, replaceStr);
  357.       IF GetItem (tree, MausTauschrsc.rnmal)
  358.       THEN
  359.         mtUtils.SetState (tree, MausTauschrsc.rcount, MagicAES.DISABLED, FALSE);
  360.         mtUtils.SetFlag (tree, MausTauschrsc.rcount, MagicAES.EDITABLE, TRUE);
  361.       ELSE
  362.         mtUtils.SetState (tree, MausTauschrsc.rcount, MagicAES.DISABLED, TRUE);
  363.         mtUtils.SetFlag (tree, MausTauschrsc.rcount, MagicAES.EDITABLE, FALSE);
  364.       END;
  365.     END;
  366.   ELSE
  367.     exit := INTEGER(BITSET(exit) - {15});
  368.     mtUtils.ExclState(tree, exit, MagicAES.SELECTED);
  369.     IF exit = MausTauschrsc.rrok
  370.     THEN
  371.       WITH replaceOpts DO
  372.         isSet := TRUE;
  373.         (* Strings auslesen *)
  374.         ignoreCase := GetItem (tree, MausTauschrsc.rcase);
  375.         onlyWord   := GetItem (tree, MausTauschrsc.rword);
  376.         (* Startposition suchen *)
  377.         IF GetItem (tree, MausTauschrsc.rfromtop) 
  378.         THEN pos := EditTypes.fromStart; 
  379.         ELSIF GetItem (tree, MausTauschrsc.rfromcur) 
  380.         THEN pos := EditTypes.fromPos; 
  381.         END;
  382.         (* Suchrichtung feststellen *)
  383.         direction := EditTypes.forward;
  384.         (* Anzahl feststellen *)
  385.         IF GetItem (tree, MausTauschrsc.reinmal) 
  386.         THEN count := EditTypes.searchOne;
  387.         ELSIF GetItem (tree, MausTauschrsc.rgesamt)
  388.         THEN count := EditTypes.searchAll
  389.         ELSE
  390.           count := EditTypes.searchNum;
  391.           mtUtils.ObjcString (tree, MausTauschrsc.rcount, numStr);
  392.           v.card := 0;
  393.           number := StrConv.StrToInt (numStr, v.card, v.bool);
  394.         END;
  395.         (* letzte Parameter *)
  396.         askBack := GetItem (tree, MausTauschrsc.raskback);
  397.         (* Jetzt noch feststellen, ob Suchen oder Ersetzen *)
  398.         mtUtils.ObjcString (tree, MausTauschrsc.rsuchstr, searchStr);
  399.         mtUtils.ObjcString (tree, MausTauschrsc.rreplstr, replaceStr);
  400.         mtUtils.ObjcString (tree, MausTauschrsc.rrqall, allChar);
  401.         mtUtils.ObjcString (tree, MausTauschrsc.rrqone, oneChar);
  402.         IF (allChar = oneChar) OR (allChar = 0c) OR (oneChar = 0c)
  403.         THEN
  404.           MTE.info (wrongWildAlert);
  405.         ELSE
  406.           CatEdit.SetWildChars (oneChar, allChar);
  407.         END;
  408.         IF CatEdit.CheckWildAssign (searchStr, replaceStr)
  409.         THEN
  410.           doIt := TRUE;
  411.           (*
  412.           v.bool := CatEdit.SearchAndReplace (replaceOpts.theSearchWdw, searchStr, replaceStr, pos, direction, 
  413.                                     count, number, ignoreCase, onlyWord, 
  414.                                     askBack, FALSE);
  415.           *)
  416.         ELSE
  417.           MTE.info (wrongWildReplace);
  418.         END;
  419.       END;
  420.     END;
  421.   END;
  422. END replaceGetSetValues;
  423.  
  424. PROCEDURE DoReplace (win: INTEGER);
  425. VAR   form:        mtUtils.tObjcTree;
  426. BEGIN
  427.   form := MausTauschrsc.TreeAddr^[MausTauschrsc.ersetzen];
  428.   IF CatEdit.IsEditTop (win)
  429.   THEN
  430.     replaceOpts.theSearchWdw := win;
  431.     replaceOpts.doIt := FALSE;
  432.     IF ~WinDials.OpenWinDial (form, TRUE, 
  433.                               replaceGetSetValues,
  434.                               replaceGetSetValues,
  435.                               replaceButton,
  436.                               WinDials.defDraw,
  437.                               "",
  438.                               NIL)
  439.     THEN
  440.       MTE.noWinDialAlert();
  441.       RETURN
  442.     END;
  443.     WinDials.WinDialHandleEvents();
  444.     WITH replaceOpts DO
  445.       IF doIt 
  446.       THEN
  447.         WdwManager.HandlePendingEvents ();
  448.         v.bool := CatEdit.SearchAndReplace (theSearchWdw, searchStr, replaceStr, pos, direction, 
  449.                                             count, number, ignoreCase, onlyWord, 
  450.                                             askBack, FALSE);
  451.       END;
  452.     END;
  453.   END;
  454. END DoReplace;
  455.  
  456. PROCEDURE tauschButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  457.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  458.   VAR res : INTEGER;
  459. BEGIN
  460.   res := INTEGER(BITSET(button) - {15});
  461.   mtUtils.ExclState(tree, res, MagicAES.SELECTED);
  462.   IF res = MausTauschrsc.tchelp
  463.   THEN
  464.     CatHelp.DoHelp (CatHelp.tauschconf);
  465.   ELSE
  466.     VDIUtil.GetIntStr (tree, MausTauschrsc.osplitsiz, v.int);
  467.     IF (res = MausTauschrsc.conf2ok) & (v.int < 1024)
  468.     THEN
  469.       MTE.info ('[1][CAT:|Eine Splitgr”že von weniger|als 1 KB ist nicht sinnvoll!][[Nochmal]');
  470.     ELSE
  471.       RETURN TRUE;
  472.     END;
  473.   END;
  474.   WinDials.WinDialDraw (tree, res, 1, v.r, FALSE); 
  475.   RETURN FALSE;
  476. END tauschButton;
  477.  
  478. PROCEDURE tauschGetSetValues (tree: ADDRESS; private: ADDRESS; 
  479.                               set: BOOLEAN; exit: INTEGER);
  480.  VAR  str : ARRAY [0..9] OF CHAR;
  481.       val : BOOLEAN;
  482. BEGIN
  483.   IF set
  484.   THEN
  485.     WITH UserInformation.UserBLK DO
  486.       SetItem(tree, MausTauschrsc.iebox,    MakeAfterDecode);
  487.       SetItem(tree, MausTauschrsc.iendebox, MakeAtEnd);
  488.       SetItem(tree, MausTauschrsc.odbox,    DeleteAfterDecode);
  489.       SetItem(tree, MausTauschrsc.osbox,    DecodeAtStart);
  490.       SetItem(tree, MausTauschrsc.otbox,    DecodeAfterRun);
  491.       SetItem(tree, MausTauschrsc.opbox,    StartTermAtStart);
  492.       SetItem(tree, MausTauschrsc.termover, TermAsOverlay);
  493.       SetItem(tree, MausTauschrsc.vsbox,    MakeBeforeTerminal);
  494.       ConfVars.GetConfDefBool (cShowLog, val, FALSE);
  495.       SetItem(tree, MausTauschrsc.oautolog, val);
  496.       SetItem(tree, MausTauschrsc.oautospl, autoSplit);
  497.       SetItem(tree, MausTauschrsc.oabsatz, endlessLines);
  498.       SetItem(tree, MausTauschrsc.omessdat, messDateToIn);
  499.       VDIUtil.SetLongIntStr (tree, MausTauschrsc.osplitsiz, splitSize);
  500.     END;
  501.   ELSE
  502.     IF exit = MausTauschrsc.conf2ok
  503.     THEN
  504.       WITH UserInformation.UserBLK DO
  505.         MakeAfterDecode   := GetItem(tree, MausTauschrsc.iebox);
  506.         MakeAtEnd         := GetItem(tree, MausTauschrsc.iendebox);
  507.         DeleteAfterDecode := GetItem(tree, MausTauschrsc.odbox);
  508.         DecodeAtStart     := GetItem(tree, MausTauschrsc.osbox);
  509.         DecodeAfterRun    := GetItem(tree, MausTauschrsc.otbox);
  510.         StartTermAtStart  := GetItem(tree, MausTauschrsc.opbox);
  511.         TermAsOverlay     := GetItem(tree, MausTauschrsc.termover);
  512.         MakeBeforeTerminal:= GetItem(tree, MausTauschrsc.vsbox);
  513.         autoSplit         := GetItem(tree, MausTauschrsc.oautospl);
  514.         endlessLines      := GetItem(tree, MausTauschrsc.oabsatz);
  515.         messDateToIn      := GetItem(tree, MausTauschrsc.omessdat);
  516.         val               := GetItem(tree, MausTauschrsc.oautolog);
  517.         v.bool := ConfVars.SetConfigBool (cShowLog, val);
  518.         v.bool := ConfVars.SetConfigBool (cAutoSplit, autoSplit);
  519.         v.bool := ConfVars.SetConfigBool (cAbsatz, endlessLines);
  520.         v.bool := ConfVars.SetConfigBool (cMakeAfterDec, MakeAfterDecode);
  521.         v.bool := ConfVars.SetConfigBool (cMakeAtEnd, MakeAtEnd);
  522.         v.bool := ConfVars.SetConfigBool (cDelAfterDecode, DeleteAfterDecode);
  523.         v.bool := ConfVars.SetConfigBool (cDecAtStart, DecodeAtStart);
  524.         v.bool := ConfVars.SetConfigBool (cDecAfterRun, DecodeAfterRun);
  525.         v.bool := ConfVars.SetConfigBool (cTermAtStart, StartTermAtStart);
  526.         v.bool := ConfVars.SetConfigBool (cTermOverlay, TermAsOverlay);
  527.         v.bool := ConfVars.SetConfigBool (cMakeBeforeTerm, MakeBeforeTerminal);
  528.         v.bool := ConfVars.SetConfigBool (cMessDate, messDateToIn);
  529.         VDIUtil.GetLongIntStr (tree, MausTauschrsc.osplitsiz, splitSize);
  530.         v.bool := ConfVars.SetConfigLongInt (cSplitSize, splitSize);
  531.       END;
  532.     END;
  533.   END;
  534. END tauschGetSetValues;
  535.  
  536. PROCEDURE DoTausch();
  537.   VAR res : INTEGER;
  538.       val : BOOLEAN;
  539.       str : ARRAY [0..9] OF CHAR;
  540.       form: mtUtils.tObjcTree;
  541.  
  542. BEGIN
  543.   form := MausTauschrsc.TreeAddr^[MausTauschrsc.tausch_cnf];
  544.   IF ~WinDials.OpenWinDial (form, FALSE, 
  545.                             tauschGetSetValues,
  546.                             tauschGetSetValues,
  547.                             tauschButton,
  548.                             WinDials.defDraw,
  549.                             "",
  550.                             NIL)
  551.   THEN
  552.     MTE.noWinDialAlert();
  553.   END;
  554. END DoTausch;
  555.  
  556. PROCEDURE CheckInfoline(REF infoline : ARRAY OF CHAR):BOOLEAN; (* Testet UserBLK.infoline *)
  557. CONST okSet = CatTypes.charSet{'A', 'F', 'U', 'D', 'T', 'G', 'H', 'M', 'S', 'V', 'N', 'R', 'I', ':', ',', ';', '.', '-',
  558.                       '<', '>', '!', '?', ' ', '#', '|'};
  559.       formatSet = CatTypes.charSet{'A','D','T','H'};
  560.       (* Neu: S fr Sex (Anrede) 
  561.        * V fr Vorname
  562.        * N fr Nachname
  563.        * F fr FuzzyDate
  564.        *)
  565. VAR z, l  : CARDINAL;
  566.     inStr : BOOLEAN;
  567.     inBrackets: BOOLEAN;
  568. BEGIN
  569.   l := MagicStrings.Length(infoline); 
  570.   inStr := FALSE;
  571.   inBrackets := FALSE;
  572.   IF l = 0 THEN RETURN FALSE END;
  573.   FOR z := 0 TO l-1 DO
  574.     IF inStr THEN
  575.       IF (infoline[z] = '"') OR (infoline[z] = "'") THEN
  576.         inStr := ~inStr
  577.       END;
  578.     ELSIF inBrackets
  579.     THEN
  580.       IF (infoline[z] = ')') THEN
  581.         inBrackets := FALSE
  582.       END;
  583.     ELSE
  584.       IF ~(MagicStrings.Cap(infoline[z]) IN okSet) THEN
  585.         IF (infoline[z] = '"') OR (infoline[z] = "'") THEN
  586.           inStr := ~inStr
  587.         ELSIF (infoline[z] = '(') & ((z>0) & (infoline[z-1] IN formatSet))
  588.         THEN
  589.           inBrackets := TRUE;
  590.         ELSE
  591.           RETURN FALSE
  592.         END;
  593.       END;
  594.     END;
  595.   END;
  596.   RETURN ~inStr
  597. END CheckInfoline;
  598.  
  599. PROCEDURE optionButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  600.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  601.   VAR res : INTEGER;
  602. BEGIN
  603.   res := INTEGER(BITSET(button) - {15});
  604.   mtUtils.ExclState (tree, res, MagicAES.SELECTED);
  605.   IF res = MausTauschrsc.ophelp
  606.   THEN
  607.     CatHelp.DoHelp (CatHelp.allgconf);
  608.   ELSE
  609.     RETURN TRUE;
  610.   END;
  611.   WinDials.WinDialDraw (tree, res, 1, v.r, FALSE); 
  612.   RETURN FALSE;
  613. END optionButton;
  614.  
  615. PROCEDURE optionGetSetValues (tree: ADDRESS; private: ADDRESS; 
  616.                               set: BOOLEAN; exit: INTEGER);
  617. VAR userName    : ARRAY[0..79] OF CHAR;
  618.     realTabs    : BOOLEAN;
  619.     val         : BOOLEAN;
  620. BEGIN
  621.   IF set
  622.   THEN
  623.     ConfVars.GetConfDefBool (cRealTabs, realTabs, FALSE);
  624.     WITH UserInformation.UserBLK DO
  625.       SetItem(tree, MausTauschrsc.ubox,     Umbruch);
  626.       SetItem(tree, MausTauschrsc.savebox,  autosave);
  627.       SetItem(tree, MausTauschrsc.lbox,     UmlautWandler);
  628.       SetItem(tree, MausTauschrsc.undobox,  AutoUndo);
  629.       SetItem(tree, MausTauschrsc.mgbox,    ignoreRead);
  630.       SetItem(tree, MausTauschrsc.mfbox,    ignoreFiltered);
  631.       SetItem(tree, MausTauschrsc.initialq, initialQuote);
  632.       SetItem(tree, MausTauschrsc.security, security);
  633.       SetItem(tree, MausTauschrsc.redirarc, RedirectArcer);
  634.       SetItem(tree, MausTauschrsc.eshowcr,  ShowCR);
  635.       SetItem(tree, MausTauschrsc.osavepos, CatGlobal.saveAllPositions);
  636.       SetItem(tree, MausTauschrsc.erealtab, realTabs);
  637.       SetItem(tree, MausTauschrsc.einforo , infoRO  );
  638.       
  639.       ConfVars.GetConfDefBool (cSortGroups, val, TRUE); 
  640.       SetItem(tree, MausTauschrsc.esortgr, val);
  641.       ConfVars.GetConfDefBool (cSortNames, val, TRUE); 
  642.       SetItem(tree, MausTauschrsc.esortnam, val);
  643.       ConfVars.GetConfDefBool (cParseEffects, val, TRUE); 
  644.       SetItem(tree, MausTauschrsc.esheff, val);
  645.       ConfVars.GetConfDefBool (cExternHelp, val, FALSE); 
  646.       SetItem(tree, MausTauschrsc.oexthelp, val);
  647.       ConfVars.GetConfDefBool (cViewWrap, val, TRUE); 
  648.       SetItem(tree, MausTauschrsc.viewwrap, val);
  649.   
  650.       ConfVars.GetConfDefStr (cOwnName, userName, ''); 
  651.   
  652.       VDIUtil.SetIntStr(tree, MausTauschrsc.waittime, waitingTime);
  653.       VDIUtil.SetIntStr(tree, MausTauschrsc.edleftm, editRight);
  654.       VDIUtil.SetIntStr(tree, MausTauschrsc.otabsize, tabSize);
  655.   
  656.       mtUtils.SetObjcString(tree, MausTauschrsc.uflgtxt1, ustr1);
  657.       mtUtils.SetObjcString(tree, MausTauschrsc.uflgtxt2, ustr2);
  658.       mtUtils.SetObjcString(tree, MausTauschrsc.ehlpprot, helpServer);
  659.       mtUtils.SetObjcString(tree, MausTauschrsc.eusernam, userName);
  660.   
  661.     END;
  662.   ELSE
  663.     IF INTEGER(BITSET(exit) - {15}) = MausTauschrsc.opok 
  664.     THEN 
  665.       WITH UserInformation.UserBLK DO
  666.         Umbruch           := GetItem(tree, MausTauschrsc.ubox);
  667.         autosave          := GetItem(tree, MausTauschrsc.savebox);
  668.         UmlautWandler     := GetItem(tree, MausTauschrsc.lbox);
  669.         AutoUndo          := GetItem(tree, MausTauschrsc.undobox);
  670.         ignoreRead        := GetItem(tree, MausTauschrsc.mgbox);
  671.         ignoreFiltered    := GetItem(tree, MausTauschrsc.mfbox);
  672.         initialQuote      := GetItem(tree, MausTauschrsc.initialq);
  673.         security          := GetItem(tree, MausTauschrsc.security);
  674.         RedirectArcer     := GetItem(tree, MausTauschrsc.redirarc);
  675.         ShowCR            := GetItem(tree, MausTauschrsc.eshowcr);
  676.         CatGlobal.saveAllPositions  := GetItem(tree, MausTauschrsc.osavepos);
  677.         realTabs          := GetItem(tree, MausTauschrsc.erealtab);
  678.         infoRO            := GetItem(tree, MausTauschrsc.einforo);
  679.         
  680.         VDIUtil.GetIntStr(tree, MausTauschrsc.waittime, waitingTime);
  681.         VDIUtil.GetIntStr(tree, MausTauschrsc.edleftm, editRight);
  682.         IF editRight < 10 THEN editRight := 10; END;
  683.         VDIUtil.GetIntStr(tree, MausTauschrsc.otabsize, tabSize);
  684.         mtUtils.ObjcString(tree, MausTauschrsc.uflgtxt1, ustr1);
  685.         mtUtils.ObjcString(tree, MausTauschrsc.uflgtxt2, ustr2);
  686.         mtUtils.ObjcString(tree, MausTauschrsc.ehlpprot, helpServer);
  687.         mtUtils.ObjcString(tree, MausTauschrsc.eusernam, userName);
  688.         
  689.         MagicStrings.Assign (userName, CatGlobal.userName);
  690.         
  691.         v.bool := ConfVars.SetConfigBool (cUmbruch, Umbruch);
  692.         v.bool := ConfVars.SetConfigBool (cAutosave, autosave);    (* !! Info-Text anders *)
  693.         v.bool := ConfVars.SetConfigBool (cUmlaut, UmlautWandler);
  694.         v.bool := ConfVars.SetConfigBool (cAutoUndo, AutoUndo);
  695.         v.bool := ConfVars.SetConfigBool (cIgnoreRead, ignoreRead);
  696.         v.bool := ConfVars.SetConfigBool (cIgnoreFiltered, ignoreFiltered);
  697.         v.bool := ConfVars.SetConfigBool (cInitials, initialQuote);
  698.         v.bool := ConfVars.SetConfigBool (cSecurity, security);
  699.         v.bool := ConfVars.SetConfigBool (cRedirect, RedirectArcer);
  700.         v.bool := ConfVars.SetConfigBool (cShowCr, ShowCR);
  701.         v.bool := ConfVars.SetConfigBool (cSavePos, CatGlobal.saveAllPositions);
  702.         v.bool := ConfVars.SetConfigBool (cRealTabs, realTabs);
  703.         v.bool := ConfVars.SetConfigBool (cInfoReadonly, infoRO);
  704.   
  705.         v.bool := ConfVars.SetConfigBool (cSortNames, mtUtils.InState (tree, MausTauschrsc.esortnam, MagicAES.SELECTED));
  706.         v.bool := ConfVars.SetConfigBool (cSortGroups, mtUtils.InState (tree, MausTauschrsc.esortgr, MagicAES.SELECTED));
  707.         v.bool := ConfVars.SetConfigBool (cParseEffects, mtUtils.InState (tree, MausTauschrsc.esheff, MagicAES.SELECTED));
  708.         v.bool := ConfVars.SetConfigBool (cExternHelp, mtUtils.InState (tree, MausTauschrsc.oexthelp, MagicAES.SELECTED));
  709.         v.bool := ConfVars.SetConfigBool (cViewWrap, mtUtils.InState (tree, MausTauschrsc.viewwrap, MagicAES.SELECTED));
  710.   
  711.         (* Jetzt noch Integer und String-Vars schreiben *)
  712.         v.bool := ConfVars.SetConfigInt  (cWaiting, waitingTime);
  713.         v.bool := ConfVars.SetConfigInt  (cMargin, editRight);
  714.         v.bool := ConfVars.SetConfigInt  (cTabsize, tabSize);
  715.         v.bool := ConfVars.SetConfigString  (cUser1, ustr1);
  716.         v.bool := ConfVars.SetConfigString  (cUser2, ustr2);
  717.         v.bool := ConfVars.SetConfigString  (cHelpServer, helpServer);
  718.         v.bool := ConfVars.SetConfigString  (cOwnName, userName);
  719.         
  720.       END
  721.     END;
  722.   END;
  723. END optionGetSetValues;
  724.  
  725. PROCEDURE DoOption();
  726.   VAR option : mtUtils.tObjcTree;
  727. BEGIN
  728.   option := MausTauschrsc.TreeAddr^[MausTauschrsc.allg_cnf];
  729.   IF ~WinDials.OpenWinDial (option, FALSE, 
  730.                             optionGetSetValues,
  731.                             optionGetSetValues,
  732.                             optionButton,
  733.                             WinDials.defDraw,
  734.                             "",
  735.                             NIL)
  736.   THEN
  737.     MTE.noWinDialAlert();
  738.   END;
  739. END DoOption;
  740.  
  741. PROCEDURE abrufButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  742.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  743.   VAR res : INTEGER;
  744.       ok  : BOOLEAN;
  745. BEGIN
  746.   res := INTEGER(BITSET(button) - {15});
  747.   mtUtils.ExclState (tree, res, MagicAES.SELECTED);
  748.   ok := GetItem(tree, MausTauschrsc.getpers) OR
  749.         GetItem(tree, MausTauschrsc.getallg) OR
  750.         GetItem(tree, MausTauschrsc.getinf) ;
  751.   IF res = MausTauschrsc.gethelp
  752.   THEN
  753.     CatHelp.DoHelp (CatHelp.configInfile);
  754.     ok := FALSE
  755.   ELSIF (res # MausTauschrsc.getcance) & ~ok THEN
  756.     IF GetItem(tree, MausTauschrsc.messtoin) OR GetItem (tree, MausTauschrsc.statusin) THEN
  757.       ok := mtAlerts.Alert(1, '[2][CAT:|Das Infile k”nnte leer|sein, wenn Sie keine Nachricht|eingegeben haben.][[Ok|:[Nochmal]')=1;
  758.     ELSE
  759.       v.int := mtAlerts.Alert(1, '[3][CAT:|Das Infile wird ungltig,|da es keinen Inhalt hat!][[Stimmt]');
  760.     END;
  761.   END;
  762.   IF ok OR (res = MausTauschrsc.getcance) 
  763.   THEN
  764.     RETURN TRUE;
  765.   END;
  766.   WinDials.WinDialDraw (tree, res, 1, v.r, FALSE); 
  767.   RETURN FALSE;
  768. END abrufButton;
  769.  
  770. PROCEDURE abrufGetSetValues (tree: ADDRESS; private: ADDRESS; 
  771.                              set: BOOLEAN; exit: INTEGER);
  772. BEGIN
  773.   IF set
  774.   THEN
  775.     WITH UserInformation.UserBLK DO
  776.       SetItem(tree, MausTauschrsc.getpers, getPer);
  777.       SetItem(tree, MausTauschrsc.getownp, getOwnPers);
  778.       SetItem(tree, MausTauschrsc.getallg, getAllg);
  779.       SetItem(tree, MausTauschrsc.getinf,  getInf);
  780.       SetItem(tree, MausTauschrsc.messtoin,messToIn);
  781.       SetItem(tree, MausTauschrsc.groupcha,groupChangeToIn);
  782.       SetItem(tree, MausTauschrsc.statusin,statusToIn);
  783.     END;
  784.   ELSE
  785.     exit := INTEGER(BITSET(exit) - {15});    
  786.     IF exit # MausTauschrsc.getcance
  787.     THEN
  788.       WITH UserInformation.UserBLK DO
  789.         getPer          := GetItem(tree, MausTauschrsc.getpers);
  790.         getOwnPers      := GetItem(tree, MausTauschrsc.getownp);
  791.         getAllg         := GetItem(tree, MausTauschrsc.getallg);
  792.         getInf          := GetItem(tree, MausTauschrsc.getinf);
  793.         messToIn        := GetItem(tree, MausTauschrsc.messtoin);
  794.         groupChangeToIn := GetItem(tree, MausTauschrsc.groupcha);
  795.         statusToIn      := GetItem(tree, MausTauschrsc.statusin);
  796.         v.bool := ConfVars.SetConfigBool (cPersToIn, getPer);
  797.         v.bool := ConfVars.SetConfigBool (cSendPE,   getOwnPers);
  798.         v.bool := ConfVars.SetConfigBool (cAllgToIn, getAllg);
  799.         v.bool := ConfVars.SetConfigBool (cInfoToIn, getInf);
  800.         v.bool := ConfVars.SetConfigBool (cMessToIn, messToIn);
  801.         v.bool := ConfVars.SetConfigBool (cGroupsToIn, groupChangeToIn);
  802.         v.bool := ConfVars.SetConfigBool (cStatusToIn, statusToIn);
  803.       END;
  804.     END;
  805.   END;
  806. END abrufGetSetValues;
  807.  
  808. PROCEDURE DoAbruf();
  809. VAR abruf  : mtUtils.tObjcTree;
  810.  
  811. BEGIN
  812.   abruf := MausTauschrsc.TreeAddr^[MausTauschrsc.abruf];
  813.   IF ~WinDials.OpenWinDial (abruf, FALSE, 
  814.                             abrufGetSetValues,
  815.                             abrufGetSetValues,
  816.                             abrufButton,
  817.                             WinDials.defDraw,
  818.                             "",
  819.                             NIL)
  820.   THEN
  821.     MTE.noWinDialAlert();
  822.   END;
  823. END DoAbruf;
  824.  
  825. PROCEDURE DoInfos();
  826. VAR str    : ARRAY[0..255] OF CHAR;
  827. BEGIN
  828.   MagicStrings.Assign ("", str);
  829.   v.bool := InfoDlg.doInfoList (FALSE, str);
  830. END DoInfos;
  831.  
  832. TYPE    printerInfo = RECORD
  833.                         cfgFile       : CatTypes.String255;
  834.                         cfgPath       : CatTypes.pathStrType;
  835.                         cfgName       : CatTypes.nameStrType;
  836.                         cfgExt        : CatTypes.extStrType;
  837.                       END;
  838.         prInfoPtr   = POINTER TO printerInfo;
  839.  
  840. PROCEDURE printerButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  841.                           mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  842.   VAR but           : INTEGER;
  843.       prnConf,
  844.       prnTypeSel,
  845.       prnStyleSel,
  846.       prnIFSel      : mtUtils.tObjcTree;
  847.       x, y          : INTEGER;
  848.       select        : INTEGER;
  849.       selStr        : ARRAY [0..40] OF CHAR;
  850.       t             : Trick;
  851.       res           : BOOLEAN;
  852.       name          : CatTypes.String127;
  853.       prInfo        : prInfoPtr;
  854. BEGIN
  855.   prInfo := private;
  856.   prnTypeSel:= MausTauschrsc.TreeAddr^[MausTauschrsc.selectbx];
  857.   prnStyleSel:= MausTauschrsc.TreeAddr^[MausTauschrsc.psizebox];
  858.   prnIFSel  := MausTauschrsc.TreeAddr^[MausTauschrsc.ifbox];
  859.   prnConf := tree;
  860.   but := INTEGER(BITSET(button) - {15});
  861.   CASE but OF
  862.     MausTauschrsc.oprtsiz0,
  863.     MausTauschrsc.oprtsiz1:
  864.            but := MausTauschrsc.oprtsiz1;
  865.            MagicAES.ObjcOffset (tree, but, x, y);
  866.            t := ADR (prnConf^[but].obState);
  867.            select := mtPopups.TreePopup (prnStyleSel, x, y, ORD(t^.hi))-1;
  868.            IF select >= 0 THEN
  869.              t^.hi := CHR(select);
  870.              VDIUtil.SetXString (tree, but, prnStyleSel, select);
  871.              WinDials.WinDialDraw (tree, but, 0, v.r, FALSE);
  872.            END;|
  873.     MausTauschrsc.oprtsiz2:
  874.            t := ADR (prnConf^[but-1].obState);
  875.            t^.hi := CHR((ORD(t^.hi)+1) MOD 3);
  876.            select := ORD (t^.hi);
  877.            VDIUtil.SetXString (tree, but-1, prnStyleSel, select);
  878.            WinDials.WinDialDraw (tree, but-1, 0, v.r, FALSE); |
  879.     MausTauschrsc.oprtopt0,
  880.     MausTauschrsc.oprtopt:
  881.            but := MausTauschrsc.oprtopt;
  882.            MagicAES.ObjcOffset (tree, but, x, y);
  883.            t := ADR (prnConf^[but].obState);
  884.            select := mtPopups.TreePopup (prnTypeSel, x, y, ORD(t^.hi))-1;
  885.            IF select >= 0 THEN
  886.              t^.hi := CHR(select);
  887.              VDIUtil.SetXString (tree, but, prnTypeSel, select);
  888.              WinDials.WinDialDraw (tree, but, 0, v.r, FALSE);
  889.            END;|
  890.     MausTauschrsc.oprtopt2:
  891.            t := ADR (prnConf^[but-1].obState);
  892.            t^.hi := CHR((ORD(t^.hi)+1) MOD 4);
  893.            select := ORD (t^.hi);
  894.            VDIUtil.SetXString (tree, but-1, prnTypeSel, select);
  895.            WinDials.WinDialDraw (tree, but-1, 0, v.r, FALSE); |
  896.     MausTauschrsc.ointerfc0,
  897.     MausTauschrsc.ointerfc1: 
  898.            but := MausTauschrsc.ointerfc1;
  899.            MagicAES.ObjcOffset (tree, but, x, y);
  900.            t := ADR (prnConf^[but].obState);
  901.            select := mtPopups.TreePopup (prnIFSel, x, y, ORD(t^.hi))-1;
  902.            IF select >= 0 THEN
  903.              t^.hi := CHR(select);
  904.              VDIUtil.SetXString (tree, but, prnIFSel, select);
  905.              WinDials.WinDialDraw (tree, but, 0, v.r, FALSE);
  906.            END;|
  907.     MausTauschrsc.ointerfc2:
  908.            t := ADR (prnConf^[but-1].obState);
  909.            t^.hi := CHR((ORD(t^.hi)+1) MOD 2);
  910.            select := ORD (t^.hi);
  911.            VDIUtil.SetXString (tree, but-1, prnIFSel, select);
  912.            WinDials.WinDialDraw (tree, but-1, 0, v.r, FALSE); |
  913.     MausTauschrsc.oselcfg0,
  914.     MausTauschrsc.oselcfg:
  915.            but := MausTauschrsc.oselcfg;
  916.            res := CatGlobal.FselGet (prInfo^.cfgPath, prInfo^.cfgName, '*.cfg', 'CFG-Datei ausw„hlen', TRUE);
  917.            IF res & (prInfo^.cfgName[0] # '')
  918.            THEN
  919.              MagicStrings.Assign (prInfo^.cfgPath, prInfo^.cfgFile);
  920.              MagicStrings.Append (prInfo^.cfgName, prInfo^.cfgFile);
  921.              Printer.LoadCFGFile (prInfo^.cfgFile);
  922.              IF Printer.Response = Printer.CFGnotFound
  923.              THEN
  924.                MTE.info ('[3][CAT:|CFG-File nicht|gefunden!][[Abbruch]');
  925.              ELSIF Printer.Response = Printer.wrongIdent
  926.              THEN
  927.                MTE.info ('[3][CAT:|Diese Datei ist|keine CFG-Datei!][[Abbruch]');
  928.              ELSIF Printer.Response = Printer.done
  929.              THEN
  930.                Printer.GetPrnName (name);
  931.                mtUtils.SetObjcString (tree, MausTauschrsc.oselcfg, prInfo^.cfgName);
  932.                mtUtils.SetObjcString (tree, MausTauschrsc.printname, name);
  933.                mtUtils.CalcArea (tree, MausTauschrsc.printname, v.r);
  934.                WinDials.WinDialDraw (tree, 0, 8, v.r, TRUE);
  935.              END;
  936.            ELSIF res
  937.            THEN
  938.              Printer.FreeCFGFile();
  939.              MagicStrings.Assign ('', prInfo^.cfgFile);
  940.              Printer.GetPrnName (name);
  941.              mtUtils.SetObjcString (tree, MausTauschrsc.printname, name);
  942.              MagicStrings.Assign ('noname.cfg',prInfo^.cfgName);
  943.              mtUtils.SetObjcString (tree, MausTauschrsc.oselcfg, prInfo^.cfgName);
  944.              mtUtils.CalcArea (tree, MausTauschrsc.printname, v.r);
  945.              WinDials.WinDialDraw (tree, 0, 8, v.r, TRUE);
  946.            END; 
  947.            mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  948.            WinDials.WinDialDraw (tree, but, 0, v.r, FALSE); |  
  949.     MausTauschrsc.prok,
  950.     MausTauschrsc.prcancel: 
  951.            mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  952.            RETURN TRUE; |
  953.   ELSE
  954.   END;
  955.   RETURN FALSE;
  956. END printerButton;
  957.  
  958. PROCEDURE printerGetSetValues (tree: ADDRESS; private: ADDRESS; 
  959.                                set: BOOLEAN; exit: INTEGER);
  960. VAR prnTypeSel,
  961.     prnStyleSel,
  962.     prnIFSel    : mtUtils.tObjcTree;
  963.     val         : BOOLEAN;
  964.     intVal      : INTEGER;
  965.     name        : ARRAY [0..79] OF CHAR;
  966.     prInfo      : prInfoPtr;
  967. BEGIN
  968.   prInfo := private;
  969.   prnTypeSel:= MausTauschrsc.TreeAddr^[MausTauschrsc.selectbx];
  970.   prnStyleSel:= MausTauschrsc.TreeAddr^[MausTauschrsc.psizebox];
  971.   prnIFSel  := MausTauschrsc.TreeAddr^[MausTauschrsc.ifbox];
  972.   IF set
  973.   THEN (* set *)
  974.     (* Noch Namen des CFG-Files *)
  975.     IF ConfVars.GetConfigString (cPrtCfg, prInfo^.cfgFile)
  976.     THEN
  977.       mtDir.SplitPath (prInfo^.cfgFile, prInfo^.cfgPath, prInfo^.cfgName, prInfo^.cfgExt);
  978.     ELSE
  979.       MagicStrings.Assign ('', prInfo^.cfgFile);
  980.       MagicStrings.Assign ('noname.cfg', prInfo^.cfgName);
  981.       MagicStrings.Assign (MTPaths.DataPath, prInfo^.cfgPath);
  982.     END;
  983.     mtUtils.SetObjcString (tree, MausTauschrsc.oselcfg, prInfo^.cfgName);
  984.  
  985.     ConfVars.GetConfDefInt (cPrtMargin, intVal, 0);
  986.     VDIUtil.SetIntStr (tree, MausTauschrsc.oprleftm, intVal);
  987.     ConfVars.GetConfDefInt (cPrtLines, intVal, 0);
  988.     intVal := intVal MOD 10;  (* Maximal 0 bis 9 *)
  989.     VDIUtil.SetIntStr (tree, MausTauschrsc.oprlines, intVal);
  990.     ConfVars.GetConfDefBool (cPrtNlq, val, FALSE);
  991.     mtUtils.SetState (tree, MausTauschrsc.oprnnlq, MagicAES.SELECTED, val);
  992.     ConfVars.GetConfDefBool (cPrtFF, val, FALSE);
  993.     mtUtils.SetState (tree, MausTauschrsc.oformfeed, MagicAES.SELECTED, val);
  994.     Printer.GetPrnName (name);
  995.     mtUtils.SetObjcString (tree, MausTauschrsc.printname, name);
  996.     ConfVars.GetConfDefInt (cPrtHeader, intVal, 0);
  997.     VDIUtil.SetXState (tree, MausTauschrsc.oprtopt, ORD(intVal));
  998.     VDIUtil.SetXString (tree, MausTauschrsc.oprtopt, prnTypeSel, ORD(intVal));
  999.     ConfVars.GetConfDefInt (cPrtPort, intVal, 0);
  1000.     VDIUtil.SetXState (tree, MausTauschrsc.ointerfc1, ORD(intVal));
  1001.     VDIUtil.SetXString (tree, MausTauschrsc.ointerfc1, prnIFSel, ORD(intVal));
  1002.     ConfVars.GetConfDefInt (cPrtStyle, intVal, 0);
  1003.     VDIUtil.SetXState (tree, MausTauschrsc.oprtsiz1, ORD(intVal));
  1004.     VDIUtil.SetXString (tree, MausTauschrsc.oprtsiz1, prnStyleSel, ORD(intVal));
  1005.   ELSE
  1006.     exit := INTEGER(BITSET(exit) - {15});    
  1007.     IF exit = MausTauschrsc.prok
  1008.     THEN
  1009.       v.bool := ConfVars.SetConfigInt  (cPrtHeader, VDIUtil.GetXState (tree, MausTauschrsc.oprtopt));
  1010.       v.bool := ConfVars.SetConfigInt  (cPrtPort, VDIUtil.GetXState (tree, MausTauschrsc.ointerfc1));
  1011.       v.bool := ConfVars.SetConfigInt  (cPrtStyle, VDIUtil.GetXState (tree, MausTauschrsc.oprtsiz1));
  1012.       v.bool := ConfVars.SetConfigBool (cPrtNlq, mtUtils.InState (tree, MausTauschrsc.oprnnlq, MagicAES.SELECTED));
  1013.       v.bool := ConfVars.SetConfigBool (cPrtFF, mtUtils.InState (tree, MausTauschrsc.oformfeed, MagicAES.SELECTED));
  1014.       VDIUtil.GetIntStr (tree, MausTauschrsc.oprleftm, intVal);
  1015.       v.bool := ConfVars.SetConfigInt (cPrtMargin, intVal);
  1016.       VDIUtil.GetIntStr (tree, MausTauschrsc.oprlines, intVal);
  1017.       v.bool := ConfVars.SetConfigInt (cPrtLines, intVal);
  1018.       IF prInfo^.cfgFile[0] # '' THEN v.bool := ConfVars.SetConfigString (cPrtCfg, prInfo^.cfgFile); END;
  1019.     ELSE
  1020.       ConfVars.GetConfDefStr (cPrtCfg, prInfo^.cfgFile, '');
  1021.       IF prInfo^.cfgFile[0] # '' THEN Printer.LoadCFGFile (prInfo^.cfgFile); END;
  1022.     END;
  1023.     DISPOSE (prInfo);
  1024.   END;
  1025. END printerGetSetValues;
  1026.  
  1027. PROCEDURE doPrinter();
  1028. VAR printConf   : mtUtils.tObjcTree;
  1029.       prInfo    : prInfoPtr;
  1030.       
  1031.   
  1032. BEGIN
  1033.   printConf := MausTauschrsc.TreeAddr^[MausTauschrsc.prnconf];
  1034.   NEW (prInfo);
  1035.   IF prInfo = NIL
  1036.   THEN
  1037.     MTE.noMemAlert();
  1038.     RETURN
  1039.   END;
  1040.   IF ~WinDials.OpenWinDial (printConf, FALSE, 
  1041.                             printerGetSetValues,
  1042.                             printerGetSetValues,
  1043.                             printerButton,
  1044.                             WinDials.defDraw,
  1045.                             "",
  1046.                             prInfo)
  1047.   THEN
  1048.     DISPOSE (prInfo);
  1049.     MTE.noWinDialAlert();
  1050.   END;
  1051. END doPrinter;
  1052.  
  1053. PROCEDURE buildVarName (REF name: ARRAY OF CHAR; number: INTEGER; VAR newName: ARRAY OF CHAR);
  1054. BEGIN
  1055.   MagicStrings.Assign (name, newName);
  1056.   MagicStrings.Append (StrConv.IntToStr (number, 0), newName);
  1057. END buildVarName;
  1058.  
  1059. PROCEDURE listButton (obTree: ADDRESS; private: ADDRESS; button: INTEGER;
  1060.                       mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  1061.  VAR tree,
  1062.      sortPop    : mtUtils.tObjcTree;
  1063.      x, y       : INTEGER;
  1064.      but        : INTEGER;
  1065.      t          : Trick;
  1066.      select     : INTEGER;
  1067. BEGIN
  1068.   tree := obTree;
  1069.   sortPop := MausTauschrsc.TreeAddr^[MausTauschrsc.lsortpop];
  1070.   but := INTEGER(BITSET(button) - {15});
  1071.   mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  1072.   CASE but OF
  1073.     MausTauschrsc.lcsort0,
  1074.     MausTauschrsc.lcsort1:
  1075.       but := MausTauschrsc.lcsort1;
  1076.       MagicAES.ObjcOffset (tree, but, x, y);
  1077.       t := ADR (tree^[but].obState);
  1078.       select := mtPopups.TreePopup (sortPop, x, y, ORD(t^.hi))-1;
  1079.       IF select >= 0 THEN
  1080.         t^.hi := CHR(select);
  1081.         VDIUtil.SetXString (tree, but, sortPop, select);
  1082.         WinDials.WinDialDraw (tree, but, 0, v.r, FALSE);
  1083.       END;|
  1084.     MausTauschrsc.lcsort2:
  1085.       t := ADR (tree^[but-1].obState);
  1086.       t^.hi := CHR((ORD(t^.hi)+1) MOD 6);
  1087.       select := ORD (t^.hi);
  1088.       VDIUtil.SetXString (tree, but-1, sortPop, select);
  1089.       WinDials.WinDialDraw (tree, but-1, 0, v.r, FALSE); |
  1090.     MausTauschrsc.lchelp: 
  1091.       CatHelp.DoHelp (CatHelp.listconf);
  1092.       WinDials.WinDialDraw (tree, but, 1, v.r, FALSE); |
  1093.     MausTauschrsc.lcok,
  1094.     MausTauschrsc.lcquit: 
  1095.       RETURN TRUE;
  1096.   ELSE
  1097.   END;
  1098.   RETURN FALSE;
  1099. END listButton;
  1100.  
  1101. PROCEDURE listGetSetValues (tree: ADDRESS; private: ADDRESS; 
  1102.                             set: BOOLEAN; exit: INTEGER);
  1103.  VAR sortPop    : mtUtils.tObjcTree;
  1104.      intVal     : INTEGER;
  1105.      boolVal    : BOOLEAN;
  1106.      x, y       : INTEGER;
  1107.      varname    : ARRAY [0..127] OF CHAR;
  1108. BEGIN
  1109.   sortPop := MausTauschrsc.TreeAddr^[MausTauschrsc.lsortpop];
  1110.   IF set
  1111.   THEN
  1112.     ConfVars.GetConfDefBool (cListShrink, boolVal, FALSE);
  1113.     mtUtils.SetState (tree, MausTauschrsc.lcshort, MagicAES.SELECTED, boolVal);
  1114.     ConfVars.GetConfDefBool (cListFilter, boolVal, FALSE);
  1115.     mtUtils.SetState (tree, MausTauschrsc.lcfilt, MagicAES.SELECTED, boolVal);
  1116.     ConfVars.GetConfDefBool (cListCase, boolVal, FALSE);
  1117.     mtUtils.SetState (tree, MausTauschrsc.lccase, MagicAES.SELECTED, boolVal);
  1118.     FOR x := 1 TO 10 DO
  1119.       buildVarName (cListSearch, x, varname);
  1120.       ConfVars.GetConfDefBool (varname, boolVal, FALSE);
  1121.       mtUtils.SetState (tree, MausTauschrsc.lckonf1+x-1, MagicAES.SELECTED, boolVal);
  1122.     END;
  1123.     ConfVars.GetConfDefInt  (cListSort, intVal, 3);
  1124.     VDIUtil.SetXState (tree, MausTauschrsc.lcsort1, ORD(intVal));
  1125.     VDIUtil.SetXString (tree, MausTauschrsc.lcsort1, sortPop, intVal);
  1126.   ELSE
  1127.     exit := INTEGER(BITSET(exit) - {15});    
  1128.     IF exit = MausTauschrsc.lcok
  1129.     THEN
  1130.       (* ge„nderte Konfiguration auslesen und speichern *)
  1131.       boolVal := mtUtils.InState (tree, MausTauschrsc.lcshort, MagicAES.SELECTED);
  1132.       v.bool := ConfVars.SetConfigBool (cListShrink, boolVal);
  1133.       boolVal := mtUtils.InState (tree, MausTauschrsc.lccase, MagicAES.SELECTED);
  1134.       v.bool := ConfVars.SetConfigBool (cListCase, boolVal);
  1135.       intVal := VDIUtil.GetXState (tree, MausTauschrsc.lcsort1);
  1136.       v.bool := ConfVars.SetConfigInt (cListSort, intVal);
  1137.   
  1138.       boolVal := mtUtils.InState (tree, MausTauschrsc.lcfilt, MagicAES.SELECTED);
  1139.       v.bool := ConfVars.SetConfigBool (cListFilter, boolVal);
  1140.       FOR x := 1 TO 10 DO
  1141.         buildVarName (cListSearch, x, varname);
  1142.         boolVal := mtUtils.InState (tree, MausTauschrsc.lckonf1+x-1, MagicAES.SELECTED);
  1143.         v.bool := ConfVars.SetConfigBool (varname, boolVal);
  1144.       END;
  1145.     END;
  1146.   END;
  1147. END listGetSetValues;
  1148.  
  1149. PROCEDURE doList ();
  1150.   VAR   tree    : mtUtils.tObjcTree;
  1151. BEGIN
  1152.   tree := MausTauschrsc.TreeAddr^[MausTauschrsc.list_cnf];
  1153.   IF ~WinDials.OpenWinDial (tree, FALSE, 
  1154.                             listGetSetValues,
  1155.                             listGetSetValues,
  1156.                             listButton,
  1157.                             WinDials.defDraw,
  1158.                             "",
  1159.                             NIL)
  1160.   THEN
  1161.     MTE.noWinDialAlert();
  1162.   END;
  1163. END doList;
  1164.  
  1165. PROCEDURE editButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  1166.                       mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  1167.   VAR exitPtr: POINTER TO INTEGER;
  1168.       but    : INTEGER;
  1169. BEGIN
  1170.   exitPtr := private;
  1171.   but := INTEGER(BITSET(button) - {15});
  1172.   CASE but OF
  1173.     MausTauschrsc.tabok,
  1174.     MausTauschrsc.tabquit : 
  1175.       mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  1176.       exitPtr^ := but;
  1177.       RETURN TRUE; |
  1178.     MausTauschrsc.tabhelp : 
  1179.       CatHelp.DoHelp (CatHelp.confEdit);
  1180.       mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  1181.       mtDials.DialDraw (tree, but, 1, v.r, FALSE); |
  1182.   ELSE
  1183.   END;
  1184.   RETURN FALSE;
  1185. END editButton;
  1186.  
  1187. PROCEDURE DoRealEditor (wdw : INTEGER);
  1188. VAR exit   : INTEGER;
  1189.     str    : ARRAY[0..20] OF CHAR;
  1190.     nr     : INTEGER;
  1191.     redraw : BOOLEAN;
  1192.     varname: CatTypes.String127;
  1193.     i      : INTEGER;
  1194.     isTop  : BOOLEAN;
  1195.     tabBox : mtUtils.tObjcTree;
  1196. BEGIN
  1197.   (* Box initialisieren *)
  1198.   isTop := CatEdit.IsEditTop (wdw);
  1199.  
  1200.   tabBox := MausTauschrsc.TreeAddr^[MausTauschrsc.tabbox];
  1201.   (*
  1202.   mtUtils.SetState (tabBox, MausTauschrsc.taext0, MagicAES.DISABLED, ~isTop);
  1203.   mtUtils.SetState (tabBox, MausTauschrsc.tatabw0, MagicAES.DISABLED, ~isTop);
  1204.   mtUtils.SetState (tabBox, MausTauschrsc.taumbr0, MagicAES.DISABLED, ~isTop);
  1205.   mtUtils.SetState (tabBox, MausTauschrsc.tartab0, MagicAES.DISABLED, ~isTop);
  1206.   mtUtils.SetState (tabBox, MausTauschrsc.taback0, MagicAES.DISABLED, ~isTop);
  1207.   mtUtils.SetState (tabBox, MausTauschrsc.talinel0, MagicAES.DISABLED, ~isTop);
  1208.   mtUtils.SetFlag (tabBox, MausTauschrsc.talinel0, MagicAES.EDITABLE, isTop);
  1209.   mtUtils.SetFlag (tabBox, MausTauschrsc.tatabw0, MagicAES.EDITABLE, isTop);
  1210.   IF isTop
  1211.   THEN
  1212.   *)
  1213.     (* Erstmal die Topwindow-Sachen *)
  1214.     CatEdit.GetTabsize (wdw, nr);
  1215.     mtUtils.SetObjcString (tabBox, MausTauschrsc.tatabw0, StrConv.IntToStr (nr,0));
  1216.     SetItem (tabBox, MausTauschrsc.taumbr0, CatEdit.GetMode (wdw, CatEdit.wrapMode));
  1217.     SetItem (tabBox, MausTauschrsc.taback0, CatEdit.GetMode (wdw, CatEdit.autoBackup));
  1218.     SetItem (tabBox, MausTauschrsc.tartab0, CatEdit.GetMode (wdw, CatEdit.tabMode));
  1219.     CatEdit.GetMargins (wdw, nr);
  1220.     mtUtils.SetObjcString (tabBox, MausTauschrsc.talinel0, StrConv.IntToStr (nr,0));
  1221. (*  END; *)
  1222.   (* Und jetzt die ber die Configstrings *)
  1223.   FOR i := 1 TO 8 DO
  1224.     buildVarName (cExtension, i, varname);
  1225.     ConfVars.GetConfDefStr (varname, str, "");
  1226.     mtUtils.SetObjcString (tabBox, MausTauschrsc.taext1+i-1, str);
  1227.     buildVarName (cExtTabsize, i, varname);
  1228.     ConfVars.GetConfDefInt (varname, nr, 4);
  1229.     mtUtils.SetObjcString (tabBox, MausTauschrsc.tatabw1+i-1, StrConv.IntToStr (nr,0));
  1230.     buildVarName (cExtHardTabs, i, varname);
  1231.     ConfVars.GetConfDefBool (varname, v.bool, FALSE);
  1232.     SetItem (tabBox, MausTauschrsc.tartab1+i-1, v.bool);
  1233.     buildVarName (cExtWordWrap, i, varname);
  1234.     ConfVars.GetConfDefBool (varname, v.bool, FALSE);
  1235.     SetItem (tabBox, MausTauschrsc.taumbr1+i-1, v.bool);
  1236.     buildVarName (cExtRightMargin, i, varname);
  1237.     ConfVars.GetConfDefInt (varname, nr, 255);
  1238.     mtUtils.SetObjcString (tabBox, MausTauschrsc.talinel1+i-1, StrConv.IntToStr (nr,0));
  1239.     buildVarName (cExtAutoBackup, i, varname);
  1240.     ConfVars.GetConfDefBool (varname, v.bool, FALSE);
  1241.     SetItem (tabBox, MausTauschrsc.taback1+i-1, v.bool);
  1242.   END;
  1243.  
  1244.   IF ~WinDials.OpenWinDial (tabBox, FALSE, 
  1245.                             WinDials.defSet,
  1246.                             WinDials.defSet,
  1247.                             editButton,
  1248.                             WinDials.defDraw,
  1249.                             "",
  1250.                             ADR(exit))
  1251.   THEN
  1252.     MTE.noWinDialAlert();
  1253.   END;
  1254.   WinDials.WinDialHandleEvents ();
  1255.  
  1256.   (* exit := WinDials.WinDialDo (tabBox, 0); *)
  1257.  
  1258.   IF exit = MausTauschrsc.tabok THEN
  1259.  
  1260.     redraw := FALSE;
  1261.     (* Erstmal die Topwindow-Sachen *)
  1262.     CatEdit.SetMode (wdw, CatEdit.wrapMode, GetItem (tabBox, MausTauschrsc.taumbr0));
  1263.     CatEdit.SetMode (wdw, CatEdit.autoBackup, GetItem (tabBox, MausTauschrsc.taback0));
  1264.     CatEdit.SetMode (wdw, CatEdit.tabMode, GetItem (tabBox, MausTauschrsc.tartab0));
  1265.     mtUtils.ObjcString (tabBox, MausTauschrsc.tatabw0, str);
  1266.     v.card := 0;
  1267.     nr := StrConv.StrToInt (str, v.card, v.bool);
  1268.     IF v.bool
  1269.     THEN
  1270.       CatEdit.SetTabsize (wdw, nr);
  1271.       IF CatEdit.GetMode (wdw, CatEdit.tabMode)
  1272.       THEN
  1273.         redraw := TRUE;
  1274.       END;
  1275.     END;
  1276.     mtUtils.ObjcString (tabBox, MausTauschrsc.talinel0, str);
  1277.     v.card := 0;
  1278.     nr := StrConv.StrToInt (str, v.card, v.bool);
  1279.     IF v.bool
  1280.     THEN
  1281.       CatEdit.SetMargins (wdw, nr, GetItem (tabBox, MausTauschrsc.taumbr0));
  1282.       redraw := TRUE;
  1283.     END;
  1284.     IF redraw
  1285.     THEN
  1286.       WdwManager.FullRedrawWdw (wdw);
  1287.     END;
  1288.  
  1289.     (* Und jetzt die ber die Configstrings *)
  1290.     FOR i := 1 TO 8 DO
  1291.       mtUtils.ObjcString (tabBox, MausTauschrsc.taext1+i-1, str);
  1292.       IF str[0] # ''
  1293.       THEN
  1294.         buildVarName (cExtension, i, varname);
  1295.         v.bool := ConfVars.SetConfigString (varname, str);
  1296.         mtUtils.ObjcString (tabBox, MausTauschrsc.tatabw1+i-1, str);
  1297.         v.card := 0;
  1298.         nr := StrConv.StrToInt (str, v.card, v.bool);
  1299.         IF v.bool
  1300.         THEN
  1301.           buildVarName (cExtTabsize, i, varname);
  1302.           v.bool := ConfVars.SetConfigInt (varname, nr);
  1303.         END;
  1304.         buildVarName (cExtHardTabs, i, varname);
  1305.         v.bool := ConfVars.SetConfigBool (varname, GetItem (tabBox, MausTauschrsc.tartab1+i-1));
  1306.         buildVarName (cExtWordWrap, i, varname);
  1307.         v.bool := ConfVars.SetConfigBool (varname, GetItem (tabBox, MausTauschrsc.taumbr1+i-1));
  1308.         mtUtils.ObjcString (tabBox, MausTauschrsc.talinel1+i-1, str);
  1309.         v.card := 0;
  1310.         nr := StrConv.StrToInt (str, v.card, v.bool);
  1311.         IF v.bool
  1312.         THEN
  1313.           buildVarName (cExtRightMargin, i, varname);
  1314.           v.bool := ConfVars.SetConfigInt (varname, nr);
  1315.         END;
  1316.         buildVarName (cExtAutoBackup, i, varname);
  1317.         v.bool := ConfVars.SetConfigBool (varname, GetItem (tabBox, MausTauschrsc.taback1+i-1));
  1318.       ELSE
  1319.         (* Konfiguration l”schen!! *)
  1320.         buildVarName (cExtension, i, varname);
  1321.         ConfVars.DeleteConfigVar (varname);
  1322.         buildVarName (cExtTabsize, i, varname);
  1323.         ConfVars.DeleteConfigVar (varname);
  1324.         buildVarName (cExtHardTabs, i, varname);
  1325.         ConfVars.DeleteConfigVar (varname);
  1326.         buildVarName (cExtWordWrap, i, varname);
  1327.         ConfVars.DeleteConfigVar (varname);
  1328.         buildVarName (cExtRightMargin, i, varname);
  1329.         ConfVars.DeleteConfigVar (varname);
  1330.         buildVarName (cExtAutoBackup, i, varname);
  1331.         ConfVars.DeleteConfigVar (varname);
  1332.      END;
  1333.     END;
  1334.   END;
  1335. END DoRealEditor;
  1336.  
  1337. PROCEDURE doEditor (wdw : INTEGER);
  1338.   VAR edBox : mtUtils.tObjcTree;
  1339.       tabsiz, 
  1340.       margin : INTEGER;
  1341.       str    : ARRAY [0..9] OF CHAR;
  1342. BEGIN
  1343.   IF grin.grinWindowTop (wdw)
  1344.   THEN
  1345.     edBox := MausTauschrsc.TreeAddr^[MausTauschrsc.grin_cnf];
  1346.     mtUtils.SetState (edBox, MausTauschrsc.gshoweff, MagicAES.SELECTED, CatEdit.GetMode (wdw, CatEdit.effMode));
  1347.     mtUtils.SetState (edBox, MausTauschrsc.gtabs, MagicAES.SELECTED, CatEdit.GetMode (wdw, CatEdit.tabMode));
  1348.     CatEdit.GetTabsize (wdw, tabsiz);
  1349.     VDIUtil.SetIntStr (edBox, MausTauschrsc.gtabsiz, tabsiz);
  1350.     IF WinDials.WinDialDo (edBox, 0) = MausTauschrsc.gr_ok
  1351.     THEN
  1352.       CatEdit.SetMode (wdw, CatEdit.tabMode, 
  1353.                        mtUtils.InState (edBox, MausTauschrsc.gtabs, MagicAES.SELECTED));
  1354.       CatEdit.SetMode (wdw, CatEdit.effMode, 
  1355.                        mtUtils.InState (edBox, MausTauschrsc.gshoweff, MagicAES.SELECTED));
  1356.       VDIUtil.GetIntStr (edBox, MausTauschrsc.gtabsiz, tabsiz);
  1357.       CatEdit.SetTabsize (wdw, tabsiz);
  1358.       WdwManager.FullRedrawWdw (wdw);
  1359.     END;
  1360.   ELSIF CatEdit.IsEditTop (wdw)
  1361.   THEN
  1362.     (*
  1363.     edBox := MausTauschrsc.TreeAddr^[MausTauschrsc.edit_cnf];
  1364.     mtUtils.SetState (edBox, MausTauschrsc.edwrap, MagicAES.SELECTED, CatEdit.GetMode (wdw, CatEdit.wrapMode));
  1365.     mtUtils.SetState (edBox, MausTauschrsc.edshowc, MagicAES.SELECTED, CatEdit.GetMode (wdw, CatEdit.crMode));
  1366.     mtUtils.SetState (edBox, MausTauschrsc.edtabs, MagicAES.SELECTED, CatEdit.GetMode (wdw, CatEdit.tabMode));
  1367.     CatEdit.GetTabsize (wdw, tabsiz);
  1368.     VDIUtil.SetIntStr (edBox, MausTauschrsc.edtabsiz, tabsiz);
  1369.     CatEdit.GetMargins (wdw, margin);
  1370.     VDIUtil.SetIntStr (edBox, MausTauschrsc.edmargin, margin);
  1371.     IF WinDials.WinDialDo (edBox, 0) = MausTauschrsc.edcnfok
  1372.     THEN
  1373.       CatEdit.SetMode (wdw, CatEdit.tabMode, 
  1374.                        mtUtils.InState (edBox, MausTauschrsc.edtabs, MagicAES.SELECTED));
  1375.       CatEdit.SetMode (wdw, CatEdit.crMode, 
  1376.                        mtUtils.InState (edBox, MausTauschrsc.edshowc, MagicAES.SELECTED));
  1377.       VDIUtil.GetIntStr (edBox, MausTauschrsc.edtabsiz, tabsiz);
  1378.       CatEdit.SetTabsize (wdw, tabsiz);
  1379.       VDIUtil.GetIntStr (edBox, MausTauschrsc.edmargin, margin);
  1380.       CatEdit.SetMargins (wdw, margin,
  1381.                           mtUtils.InState (edBox, MausTauschrsc.edwrap, MagicAES.SELECTED));
  1382.       WdwManager.FullRedrawWdw (wdw);
  1383.     END;
  1384.     *)
  1385.     DoRealEditor (wdw);
  1386.   END;
  1387. END doEditor;
  1388.  
  1389. TYPE    colorInfo   = RECORD
  1390.                         wdw: INTEGER;
  1391.                         isMess,
  1392.                         isEdit, 
  1393.                         isGrin,
  1394.                         isTree,
  1395.                         isList : BOOLEAN;
  1396.                       END;
  1397.         colorInfoPtr = POINTER TO colorInfo;
  1398.  
  1399. PROCEDURE SetObCol (tree : mtUtils.tObjcTree; obIdx : INTEGER; col : INTEGER);
  1400. BEGIN
  1401.   col := col MOD 16;
  1402.   tree^[obIdx].obSpec.Box.flags := BITSET(INTEGER(tree^[obIdx].obSpec.Box.flags) DIV 16 * 16 + col);
  1403. END SetObCol;
  1404.  
  1405. PROCEDURE colorButton (obTree: ADDRESS; private: ADDRESS; button: INTEGER;
  1406.                        mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  1407.  VAR  colPopup,
  1408.       effPopup,
  1409.       colorBox  : mtUtils.tObjcTree;
  1410.       select,
  1411.       x, y, 
  1412.       but    : INTEGER;
  1413.       t      : Trick;
  1414. BEGIN
  1415.   colorBox := obTree;
  1416.   colPopup  := MausTauschrsc.TreeAddr^[MausTauschrsc.colpopup];
  1417.   effPopup  := MausTauschrsc.TreeAddr^[MausTauschrsc.effpopup];
  1418.  
  1419.   but := INTEGER(BITSET(button) - {15});
  1420.   mtUtils.ExclState(colorBox, but, MagicAES.SELECTED);
  1421.  
  1422.   IF but = MausTauschrsc.coqstr
  1423.   THEN
  1424.     but := MausTauschrsc.coqcol1;
  1425.   ELSIF but = MausTauschrsc.cotstr
  1426.   THEN
  1427.     but := MausTauschrsc.cotcol1;
  1428.   ELSIF but = MausTauschrsc.cobstr
  1429.   THEN
  1430.     but := MausTauschrsc.cobcol1;
  1431.   ELSIF but = MausTauschrsc.coostr
  1432.   THEN
  1433.     but := MausTauschrsc.coocol1;
  1434.   END;
  1435.   CASE but OF
  1436.     MausTauschrsc.cotcol1,
  1437.     MausTauschrsc.coqcol1,
  1438.     MausTauschrsc.cobcol1, 
  1439.     MausTauschrsc.coocol1 : 
  1440.       MagicAES.ObjcOffset (colorBox, but, x, y);
  1441.       t := ADR (colorBox^[but].obState);
  1442.       IF (mtAppl.Bitplanes > 1) OR ((but # MausTauschrsc.coqcol1) & (but # MausTauschrsc.coocol1))
  1443.       THEN
  1444.         select := mtPopups.TreePopup (colPopup, x, y, ORD(t^.hi) DIV 2) - 1;
  1445.         select := (select DIV 2) * 2 + 1;
  1446.         IF select > INTEGER(2*maxColors) 
  1447.         THEN 
  1448.           select := -1;
  1449.         END;
  1450.       ELSE
  1451.         select := mtPopups.TreePopup (effPopup, x, y, ORD(t^.hi)) - 1;
  1452.       END;
  1453.       IF select >= 0 THEN
  1454.         t^.hi := CHR(select);
  1455.         IF (mtAppl.Bitplanes > 1) OR ((but # MausTauschrsc.coqcol1) & (but # MausTauschrsc.coocol1))
  1456.         THEN
  1457.           VDIUtil.SetXString (colorBox, but, colPopup, select);
  1458.           SetObCol (colorBox, but+1, (select DIV 2));
  1459.         ELSE
  1460.           VDIUtil.SetXString (colorBox, but, effPopup, select);
  1461.         END;
  1462.         mtDials.DialDraw (colorBox, but, 1, v.r, FALSE);
  1463.       END;|
  1464.     MausTauschrsc.cotcol2,
  1465.     MausTauschrsc.coqcol2,
  1466.     MausTauschrsc.cobcol2,
  1467.     MausTauschrsc.coocol2 : 
  1468.       t := ADR (colorBox^[but+1].obState);
  1469.       IF (mtAppl.Bitplanes > 1) OR ((but # MausTauschrsc.coqcol2) & (but # MausTauschrsc.coocol2))
  1470.       THEN
  1471.         t^.hi := CHR((ORD(t^.hi)+2) MOD 32);
  1472.         t^.hi := CHR(ORD(t^.hi) MOD (2*maxColors));
  1473.       ELSE
  1474.         t^.hi := CHR((ORD(t^.hi)+1) MOD 4);
  1475.       END;
  1476.       select := ORD (t^.hi);
  1477.       IF (mtAppl.Bitplanes > 1) OR ((but # MausTauschrsc.coqcol2) & (but # MausTauschrsc.coocol2))
  1478.       THEN
  1479.         VDIUtil.SetXString (colorBox, but+1, colPopup, select);
  1480.         SetObCol (colorBox, but+2, (select DIV 2));
  1481.       ELSE
  1482.         VDIUtil.SetXString (colorBox, but+1, effPopup, select);
  1483.       END;
  1484.  
  1485.       mtDials.DialDraw (colorBox, but+1, 1, v.r, FALSE); |
  1486.     MausTauschrsc.cook,
  1487.     MausTauschrsc.coquit:
  1488.       RETURN TRUE; |
  1489.   ELSE
  1490.   END; (* CASE *)
  1491.   RETURN FALSE;
  1492. END colorButton;
  1493.  
  1494. PROCEDURE colorGetSetValues (tree: ADDRESS; private: ADDRESS; 
  1495.                              set: BOOLEAN; exit: INTEGER);
  1496.   CONST  quoteColStr= '[Quotefarbe:';
  1497.          notReadStr = '[Ungelesene:';
  1498.          holdBackStr= '[Zurckgehaltene:';
  1499.          quoteEffStr= '[Quoteeffekt:';
  1500.          subjectStr = '[Stichwortwechsel:';
  1501.          
  1502.   VAR coInfo:   colorInfoPtr;
  1503.       tCol,
  1504.       qCol,
  1505.       qEff,
  1506.       oCol,
  1507.       oEff,
  1508.       bCol : INTEGER;
  1509.       colPopup,
  1510.       effPopup : mtUtils.tObjcTree;
  1511.       midDisable   : BOOLEAN;
  1512. BEGIN
  1513.   exit := INTEGER(BITSET(exit) - {15});
  1514.   colPopup  := MausTauschrsc.TreeAddr^[MausTauschrsc.colpopup];
  1515.   coInfo := private;
  1516.   colPopup  := MausTauschrsc.TreeAddr^[MausTauschrsc.colpopup];
  1517.   effPopup  := MausTauschrsc.TreeAddr^[MausTauschrsc.effpopup];
  1518.   IF set
  1519.   THEN
  1520.     coInfo^.isGrin := grin.grinWindowTop (coInfo^.wdw);
  1521.     coInfo^.isEdit := CatEdit.IsEditTop (coInfo^.wdw) & ~coInfo^.isGrin;
  1522.     coInfo^.isList := msgList.listWindowTop (coInfo^.wdw);
  1523.     coInfo^.isMess := MsgWindow.msgWindowTop (coInfo^.wdw);
  1524.     coInfo^.isTree := treeList.treeWindowTop (coInfo^.wdw);
  1525.     (* Jetzt Strings setzen fr die einzelnen Objekte *)
  1526.     IF coInfo^.isMess
  1527.     THEN
  1528.       mtUtils.SetObjcString (tree, MausTauschrsc.coqstr, holdBackStr);
  1529.     ELSIF coInfo^.isList
  1530.     THEN
  1531.       mtUtils.SetObjcString (tree, MausTauschrsc.coqstr, notReadStr);
  1532.     ELSIF coInfo^.isTree
  1533.     THEN
  1534.       mtUtils.SetObjcString (tree, MausTauschrsc.coqstr, subjectStr);
  1535.       mtUtils.SetObjcString (tree, MausTauschrsc.coostr, notReadStr);
  1536.     ELSE
  1537.       IF mtAppl.Bitplanes > 1 
  1538.       THEN
  1539.         mtUtils.SetObjcString (tree, MausTauschrsc.coqstr, quoteColStr);
  1540.       ELSE
  1541.         mtUtils.SetObjcString (tree, MausTauschrsc.coqstr, quoteEffStr);
  1542.       END;
  1543.     END;
  1544.     (* Ggf. mittlere Zeile disablen *)
  1545.     midDisable := coInfo^.isEdit (* OR coInfo^.isMess*) OR  (coInfo^.isTree & (mtAppl.Bitplanes = 1));
  1546.     mtUtils.SetState (tree, MausTauschrsc.coqstr,  MagicAES.DISABLED, midDisable);
  1547.     mtUtils.SetState (tree, MausTauschrsc.coqcol1, MagicAES.DISABLED, midDisable);
  1548.     mtUtils.SetState (tree, MausTauschrsc.coqcol2, MagicAES.DISABLED, midDisable);
  1549.     mtUtils.SetFlag (tree, MausTauschrsc.coqcol0,  MagicAES.TOUCHEXIT,  ~midDisable);
  1550.     mtUtils.SetFlag (tree, MausTauschrsc.coqcol1,  MagicAES.TOUCHEXIT,  ~midDisable);
  1551.     mtUtils.SetFlag (tree, MausTauschrsc.coqcol2,  MagicAES.TOUCHEXIT,  ~midDisable);
  1552.     mtUtils.SetFlag (tree, MausTauschrsc.coocolbox,  MagicAES.HIDETREE,  ~coInfo^.isList & ~coInfo^.isTree);
  1553.     mtUtils.SetFlag (tree, MausTauschrsc.coostr,  MagicAES.HIDETREE,  ~coInfo^.isList & ~coInfo^.isTree);
  1554.  
  1555.     (* Jetzt die einzelnen Farben holen und Objekte vorbereiten *)
  1556.     IF coInfo^.isGrin
  1557.     THEN
  1558.       ConfVars.GetConfDefInt (cGrinTextCol, tCol, 1);
  1559.       ConfVars.GetConfDefInt (cGrinQuoteCol, qCol, 1);
  1560.       ConfVars.GetConfDefInt (cGrinQuoteEff, qEff, 1);
  1561.       ConfVars.GetConfDefInt (cGrinBackCol, bCol, 0);
  1562.       oCol := 1;
  1563.       oEff := 1;
  1564.     ELSIF coInfo^.isEdit
  1565.     THEN
  1566.       ConfVars.GetConfDefInt (cEditTextCol, tCol, 1);
  1567.       ConfVars.GetConfDefInt (cEditBackCol, bCol, 0);
  1568.       qCol := 1;
  1569.       oCol := 1;
  1570.       qEff := 1;
  1571.       oEff := 1;
  1572.     ELSIF coInfo^.isList
  1573.     THEN
  1574.       ConfVars.GetConfDefInt (cListTextCol, tCol, 1);
  1575.       ConfVars.GetConfDefInt (cListQuoteCol, qCol, 1);
  1576.       ConfVars.GetConfDefInt (cListQuoteEff, qEff, 1);
  1577.       ConfVars.GetConfDefInt (cListBackCol, bCol, 0);
  1578.       ConfVars.GetConfDefInt (cListOwnCol, oCol, 1);
  1579.       ConfVars.GetConfDefInt (cListOwnEff, oEff, 1);
  1580.     ELSIF coInfo^.isMess
  1581.     THEN
  1582.       ConfVars.GetConfDefInt (cMsgTextCol, tCol, 1);
  1583.       ConfVars.GetConfDefInt (cMsgBackCol, bCol, 0);
  1584.       ConfVars.GetConfDefInt (cMsgHoldCol, qCol, 1);
  1585.       ConfVars.GetConfDefInt (cMsgHoldEff, qEff, 1);
  1586.       oCol := 1;
  1587.       oEff := 1;
  1588.     ELSIF coInfo^.isTree
  1589.     THEN
  1590.       ConfVars.GetConfDefInt (cTreeTextCol, tCol, 1);
  1591.       ConfVars.GetConfDefInt (cTreeBackCol, bCol, 0);
  1592.       ConfVars.GetConfDefInt (cTreeSubjectCol, qCol, 1);
  1593.       ConfVars.GetConfDefInt (cTreeUnreadCol, oCol, 1);
  1594.       ConfVars.GetConfDefInt (cTreeUnreadEff, oEff, 1);
  1595.       qEff := 1;
  1596.     END;
  1597.     (* Jetzt die Objektfarben setzen *)
  1598.     IF (mtAppl.Bitplanes > 1)
  1599.     THEN
  1600.       SetObCol (tree, MausTauschrsc.coqcol0, qCol);
  1601.       VDIUtil.SetXState (tree, MausTauschrsc.coqcol1, qCol*2+1);
  1602.       VDIUtil.SetXString (tree, MausTauschrsc.coqcol1, colPopup, qCol*2+1);
  1603.       mtUtils.ExclFlag (tree, MausTauschrsc.coqcol0, MagicAES.HIDETREE);
  1604.  
  1605.       SetObCol (tree, MausTauschrsc.coocol0, oCol);
  1606.       VDIUtil.SetXState (tree, MausTauschrsc.coocol1, oCol*2+1);
  1607.       VDIUtil.SetXString (tree, MausTauschrsc.coocol1, colPopup, oCol*2+1);
  1608.       mtUtils.ExclFlag (tree, MausTauschrsc.coocol0, MagicAES.HIDETREE);
  1609.     ELSE
  1610.       VDIUtil.SetXState (tree, MausTauschrsc.coqcol1, qEff);
  1611.       VDIUtil.SetXString (tree, MausTauschrsc.coqcol1, effPopup, qEff);
  1612.       mtUtils.InclFlag (tree, MausTauschrsc.coqcol0, MagicAES.HIDETREE);
  1613.  
  1614.       VDIUtil.SetXState (tree, MausTauschrsc.coocol1, oEff);
  1615.       VDIUtil.SetXString (tree, MausTauschrsc.coocol1, effPopup, oEff);
  1616.       mtUtils.InclFlag (tree, MausTauschrsc.coocol0, MagicAES.HIDETREE);
  1617.     END;
  1618.     IF coInfo^.isTree & (mtAppl.Bitplanes = 1)
  1619.     THEN
  1620.       SetObCol (tree, MausTauschrsc.coqcol0, qCol);
  1621.       VDIUtil.SetXState (tree, MausTauschrsc.coqcol1, qCol*2+1);
  1622.       VDIUtil.SetXString (tree, MausTauschrsc.coqcol1, colPopup, qCol*2+1);
  1623.       mtUtils.ExclFlag (tree, MausTauschrsc.coqcol0, MagicAES.HIDETREE);
  1624.     END;
  1625.     SetObCol (tree, MausTauschrsc.cotcol0, tCol);
  1626.     SetObCol (tree, MausTauschrsc.cobcol0, bCol);
  1627.     VDIUtil.SetXState (tree, MausTauschrsc.cotcol1, tCol*2+1);
  1628.     VDIUtil.SetXState (tree, MausTauschrsc.cobcol1, bCol*2+1);
  1629.     VDIUtil.SetXString (tree, MausTauschrsc.cotcol1, colPopup, tCol*2+1);
  1630.     VDIUtil.SetXString (tree, MausTauschrsc.cobcol1, colPopup, bCol*2+1);
  1631.   ELSE
  1632.     IF exit = MausTauschrsc.cook
  1633.     THEN
  1634.       tCol := VDIUtil.GetXState (tree, MausTauschrsc.cotcol1) DIV 2; 
  1635.       IF mtAppl.Bitplanes > 1
  1636.       THEN
  1637.         qCol := VDIUtil.GetXState (tree, MausTauschrsc.coqcol1) DIV 2; 
  1638.         IF coInfo^.isList OR coInfo^.isTree
  1639.         THEN
  1640.           oCol := VDIUtil.GetXState (tree, MausTauschrsc.coocol1) DIV 2; 
  1641.         END;
  1642.       ELSE
  1643.         qEff := VDIUtil.GetXState (tree, MausTauschrsc.coqcol1); 
  1644.         IF coInfo^.isList OR coInfo^.isTree
  1645.         THEN
  1646.           oEff := VDIUtil.GetXState (tree, MausTauschrsc.coocol1); 
  1647.         END;
  1648.       END;
  1649.       bCol := VDIUtil.GetXState (tree, MausTauschrsc.cobcol1) DIV 2; 
  1650.       IF coInfo^.isGrin
  1651.       THEN
  1652.         v.bool := ConfVars.SetConfigInt (cGrinTextCol, tCol);
  1653.         IF mtAppl.Bitplanes > 1
  1654.         THEN
  1655.           v.bool := ConfVars.SetConfigInt (cGrinQuoteCol, qCol);
  1656.         ELSE
  1657.           v.bool := ConfVars.SetConfigInt (cGrinQuoteEff, qEff);
  1658.         END;
  1659.         v.bool := ConfVars.SetConfigInt (cGrinBackCol, bCol);
  1660.       ELSIF coInfo^.isEdit
  1661.       THEN
  1662.         v.bool := ConfVars.SetConfigInt (cEditTextCol, tCol);
  1663.         v.bool := ConfVars.SetConfigInt (cEditBackCol, bCol);
  1664.       ELSIF coInfo^.isList
  1665.       THEN
  1666.         v.bool := ConfVars.SetConfigInt (cListTextCol, tCol);
  1667.         v.bool := ConfVars.SetConfigInt (cListBackCol, bCol);
  1668.         IF mtAppl.Bitplanes > 1
  1669.         THEN
  1670.           v.bool := ConfVars.SetConfigInt (cListQuoteCol, qCol);
  1671.           v.bool := ConfVars.SetConfigInt (cListOwnCol, oCol);
  1672.         ELSE
  1673.           v.bool := ConfVars.SetConfigInt (cListQuoteEff, qEff);
  1674.           v.bool := ConfVars.SetConfigInt (cListOwnEff, oEff);
  1675.         END;
  1676.       ELSIF coInfo^.isTree
  1677.       THEN
  1678.         v.bool := ConfVars.SetConfigInt (cTreeTextCol, tCol);
  1679.         v.bool := ConfVars.SetConfigInt (cTreeBackCol, bCol);
  1680.         v.bool := ConfVars.SetConfigInt (cTreeSubjectCol, qCol);
  1681.         IF mtAppl.Bitplanes > 1
  1682.         THEN
  1683.           v.bool := ConfVars.SetConfigInt (cTreeUnreadCol, oCol);
  1684.         ELSE
  1685.           v.bool := ConfVars.SetConfigInt (cTreeUnreadEff, oEff);
  1686.         END;
  1687.       ELSIF coInfo^.isMess
  1688.       THEN
  1689.         v.bool := ConfVars.SetConfigInt (cMsgTextCol, tCol);
  1690.         v.bool := ConfVars.SetConfigInt (cMsgBackCol, bCol);
  1691.         IF mtAppl.Bitplanes > 1
  1692.         THEN
  1693.           v.bool := ConfVars.SetConfigInt (cMsgHoldCol, qCol);
  1694.         ELSE
  1695.           v.bool := ConfVars.SetConfigInt (cMsgHoldEff, qEff);
  1696.         END;
  1697.       END;
  1698.       CatGlobal.SetColors();
  1699.       CatGlobal.FullScreenRedraw();
  1700.     END;
  1701.     DISPOSE (coInfo);
  1702.   END;
  1703. END colorGetSetValues;
  1704.  
  1705. PROCEDURE doColor(wdw : INTEGER);
  1706.   VAR  colorBox : mtUtils.tObjcTree;
  1707.        colorInfo : colorInfoPtr;
  1708. BEGIN
  1709.   IF CatEdit.IsEditTop (wdw) OR msgList.listWindowTop (wdw)
  1710.   OR MsgWindow.msgWindowTop (wdw) OR treeList.treeWindowTop (wdw)
  1711.   THEN
  1712.     NEW (colorInfo);
  1713.     IF colorInfo = NIL
  1714.     THEN
  1715.       MTE.noMemAlert();
  1716.       RETURN
  1717.     END;
  1718.     colorInfo^.wdw := wdw;
  1719.     colorBox := MausTauschrsc.TreeAddr^[MausTauschrsc.farben];
  1720.     
  1721.     IF ~WinDials.OpenWinDial (colorBox, TRUE, 
  1722.                               colorGetSetValues,
  1723.                               colorGetSetValues,
  1724.                               colorButton,
  1725.                               WinDials.defDraw,
  1726.                               "",
  1727.                               colorInfo)
  1728.     THEN
  1729.       DISPOSE (colorInfo);
  1730.       MTE.noWinDialAlert();
  1731.     END;
  1732.     WinDials.WinDialHandleEvents ();
  1733.   END;
  1734. END doColor;
  1735.  
  1736. TYPE varArray =  ARRAY [1..11] OF ARRAY[0..255] OF CHAR;
  1737.      titleArray = ARRAY [1..11] OF ARRAY [0..39] OF CHAR;
  1738.  
  1739. TYPE configInfo = RECORD
  1740.                     titles: POINTER TO titleArray;
  1741.                     txtArray: POINTER TO varArray;
  1742.                   END;
  1743.      configPtr  = POINTER TO configInfo;
  1744.  
  1745. PROCEDURE translateOut (confInfo: configPtr; VAR src, dest : ARRAY OF CHAR);
  1746.   VAR path, name, suff: ARRAY [0..255] OF CHAR;
  1747. BEGIN
  1748.   MagicStrings.Assign (src, dest);  
  1749.   MagicStrings.Assign ("", suff);
  1750.   mtDir.SplitPath (confInfo^.txtArray^[5], path, name, suff);
  1751.   MagicStrings.Insert ("INFILE.", suff, 0);
  1752.   CatGlobal.ReplaceStr (dest, "$F", suff);          (* Infilename *)
  1753.   CatGlobal.ReplaceStr (dest, "$I", confInfo^.txtArray^[4]);  (* Importpath *)
  1754.   CatGlobal.ReplaceStr (dest, "$O", confInfo^.txtArray^[5]);  (* Outfilename *)
  1755.   CatGlobal.ReplaceStr (dest, "$E", confInfo^.txtArray^[6]);  (* Exportpath *)
  1756.   CatGlobal.ReplaceStr (dest, "$M", confInfo^.txtArray^[7]);  (* Messagepath *)
  1757.   mtDir.SplitPath (confInfo^.txtArray^[9], path, name, suff);
  1758.   CatGlobal.ReplaceStr (dest, "$T", path);          (* Terminalpath *)
  1759. END translateOut;
  1760.  
  1761. PROCEDURE translateIn (VAR src, dest : ARRAY OF CHAR);
  1762.   VAR path, name, suff: ARRAY [0..255] OF CHAR;
  1763. BEGIN
  1764.   MagicStrings.Assign (src, dest);
  1765.   mtDir.SplitPath (MTPaths.archiveName, path, name, suff);
  1766.   MagicStrings.Insert ("INFILE.", suff, 0);
  1767.  
  1768.   CatGlobal.ReplaceStr (dest, suff, "$F");        (* Infilename *)
  1769.   CatGlobal.ReplaceStr (dest, MTPaths.archiveName,"$O");  (* Outfilename *)
  1770.   CatGlobal.ReplaceStr (dest, MTPaths.ImportPath, "$I");  (* Importpath *)
  1771.   CatGlobal.ReplaceStr (dest, MTPaths.ExportPath, "$E");  (* Exportpath *)
  1772.   CatGlobal.ReplaceStr (dest, MTPaths.MessagePath, "$M"); (* Messagepath *)
  1773.   CatGlobal.ReplaceStr (dest, MTPaths.TerminalPath, "$T"); (* Terminalpath *)
  1774. END translateIn;
  1775.  
  1776. PROCEDURE getEdits(tree: ADDRESS; confInfo: configPtr);
  1777. BEGIN          
  1778.   mtUtils.ObjcString (tree, MausTauschrsc.psarc, confInfo^.txtArray^[2]);
  1779.   mtUtils.ObjcString (tree, MausTauschrsc.psdearc, confInfo^.txtArray^[3]);
  1780.   mtUtils.ObjcString (tree, MausTauschrsc.pscomm, confInfo^.txtArray^[10]);
  1781. END getEdits;
  1782.  
  1783. PROCEDURE configButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  1784.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  1785.   VAR idx   : INTEGER; 
  1786.       but   : INTEGER;
  1787.       confInfo: configPtr;
  1788.       res,
  1789.       pathOnly: BOOLEAN;
  1790.       str, 
  1791.       path      : ARRAY [0..255] OF CHAR;
  1792.       suff,
  1793.       name      : ARRAY [0..20] OF CHAR;
  1794.       r         : mtUtils.tRect;
  1795.       tf        : mtTextfiles.TEXTFILE;
  1796. BEGIN
  1797.   confInfo := private;
  1798.   but := INTEGER(BITSET(button) - {15});
  1799.   mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  1800.   idx := but - MausTauschrsc.pbpack+1;
  1801.   CASE but OF
  1802.     MausTauschrsc.pbpack..MausTauschrsc.pbterm:
  1803.       (* Pfad holen *)
  1804.       (* Nur bei pboutfil nur Dateinamen ohne Pfad nehmen,
  1805.        * bei pbpack oder pbterm auch noch Dateinamen an Pfad 
  1806.        * anh„ngen  
  1807.        *)
  1808.       IF but = MausTauschrsc.pboutfil
  1809.       THEN
  1810.         MagicStrings.Assign (confInfo^.txtArray^[4], path);
  1811.         MagicStrings.Assign (confInfo^.txtArray^[idx], name);
  1812.       ELSE
  1813.         mtDir.SplitPath (confInfo^.txtArray^[idx], path, name, suff);
  1814.       END;
  1815.       pathOnly :=   (but # MausTauschrsc.pbterm) 
  1816.                   & (but # MausTauschrsc.pboutfil);
  1817.       res := CatGlobal.FselGet (path, name, '*.*', confInfo^.titles^[idx], pathOnly);
  1818.       IF res
  1819.       THEN
  1820.         IF but = MausTauschrsc.pboutfil
  1821.         THEN
  1822.           MagicStrings.Assign (name, confInfo^.txtArray^[idx]);
  1823.         ELSE
  1824.           MagicStrings.Assign (path, confInfo^.txtArray^[idx]);
  1825.         END;
  1826.         IF (but = MausTauschrsc.pbpack) 
  1827.         OR (but = MausTauschrsc.pbterm) 
  1828.         THEN
  1829.           IF name[0] # ''
  1830.           THEN
  1831.             MagicStrings.Append (name, confInfo^.txtArray^[idx]);
  1832.           ELSE
  1833.             MagicStrings.Assign ('', confInfo^.txtArray^[idx]);
  1834.           END;
  1835.         END;
  1836.         mtUtils.SetObjcString (tree, but-MausTauschrsc.pbpack+MausTauschrsc.pspack, confInfo^.txtArray^[idx]);
  1837.         mtUtils.CalcArea (tree, but-MausTauschrsc.pbpack+MausTauschrsc.pspack, r); 
  1838.         WinDials.WinDialDraw (tree, 0, 2, r, TRUE);
  1839.       END; |
  1840.     MausTauschrsc.pathhelp:
  1841.       CatHelp.DoHelp (CatHelp.paths); |
  1842.     MausTauschrsc.pathsave:
  1843.       (* CAT.INF schreiben, Fileselektor, um Name zu erfragen *)
  1844.       MagicStrings.Assign (CatGlobal.infName, name);
  1845.       mtDir.SplitPath (CatGlobal.infName, path, name, suff);
  1846.       MagicStrings.Assign (CatGlobal.infPath, path);
  1847.       IF suff[0] # ''
  1848.       THEN
  1849.         MagicStrings.Insert('*.', suff, 0);
  1850.       ELSE
  1851.         suff := '*.inf'
  1852.       END;
  1853.       res := CatGlobal.FselGet (path, name, suff, 'CAT.INF sichern', FALSE);
  1854.       IF res THEN
  1855.         MagicStrings.Append (name, path);
  1856.         IF mtTextfiles.OpenTextfile (path, mtTextfiles.WRITE, 512, tf)
  1857.         THEN
  1858.           getEdits(tree, confInfo);             (* editable Strings holen *)
  1859.           IF LENGTH(confInfo^.txtArray^[1]) > 0
  1860.           THEN
  1861.             mtDir.SplitPath(confInfo^.txtArray^[1], path, name, suff);
  1862.             mtTextfiles.WriteConst (tf, path); mtTextfiles.WriteLn(tf);                (* Arc-Path *)
  1863.             mtTextfiles.WriteConst (tf, name); mtTextfiles.WriteLn(tf);                (* Arc-Name *)
  1864.           ELSE
  1865.             mtTextfiles.WriteLn (tf);
  1866.             mtTextfiles.WriteLn (tf);
  1867.           END;
  1868.           translateOut (confInfo, confInfo^.txtArray^[2], str); 
  1869.           mtTextfiles.WriteConst (tf, str); mtTextfiles.WriteLn(tf);                 (* arc-Command *)
  1870.           translateOut (confInfo, confInfo^.txtArray^[3], str);
  1871.           mtTextfiles.WriteConst (tf, str); mtTextfiles.WriteLn(tf);                 (* dearc-Command *)
  1872.           mtTextfiles.WriteConst (tf, confInfo^.txtArray^[5]); mtTextfiles.WriteLn(tf);        (* Outfile name *)
  1873.           mtTextfiles.WriteLn(tf);          (* EditorPath: not supported from dialog *)
  1874.           mtTextfiles.WriteLn(tf);          (* EditorName: not supported from dialog *)
  1875.           mtTextfiles.WriteConst (tf, confInfo^.txtArray^[7]); mtTextfiles.WriteLn(tf);        (* Messagepath *)
  1876.           mtTextfiles.WriteConst (tf, confInfo^.txtArray^[4]); mtTextfiles.WriteLn(tf);        (* Importpath *)
  1877.           mtTextfiles.WriteConst (tf, confInfo^.txtArray^[6]); mtTextfiles.WriteLn(tf);        (* Exportpath *)
  1878.           mtTextfiles.WriteConst (tf, confInfo^.txtArray^[8]); mtTextfiles.WriteLn(tf);        (* Databasepath *)
  1879.           mtDir.SplitPath(confInfo^.txtArray^[9], path, name, suff);
  1880.           mtTextfiles.WriteConst (tf, path); mtTextfiles.WriteLn(tf);                (* TerminalPath *)
  1881.           mtTextfiles.WriteConst (tf, name); mtTextfiles.WriteLn(tf);                (* TerminalName *)
  1882.           translateOut (confInfo, confInfo^.txtArray^[10], str);
  1883.           mtTextfiles.WriteConst (tf, str); mtTextfiles.WriteLn(tf);                 (* Terminalcommand *)
  1884.           mtTextfiles.CloseTextfile (tf);
  1885.           Protokoll.SendPathUpdate (path);
  1886.         ELSE
  1887.           MTE.InfoAlert (MTE.noFile1, name, MTE.noFile3);
  1888.         END;
  1889.       END;
  1890.       |
  1891.     MausTauschrsc.pathok,
  1892.     MausTauschrsc.pathquit: RETURN TRUE; |
  1893.   ELSE
  1894.   END;
  1895.   WinDials.WinDialDraw (tree, but, 1, v.r, FALSE);
  1896.   RETURN FALSE;
  1897. END configButton;
  1898.  
  1899. PROCEDURE configGetSetValues (tree: ADDRESS; private: ADDRESS; 
  1900.                               set: BOOLEAN; exit: INTEGER);
  1901.  
  1902. VAR confInfo : configPtr;
  1903.     i,
  1904.     but      : INTEGER;
  1905.     suff     : ARRAY [0..20] OF CHAR;
  1906.  
  1907. BEGIN
  1908.   confInfo := private;
  1909.   but := INTEGER(BITSET(exit) - {15});
  1910.   IF set
  1911.   THEN
  1912.     (* Strings setzen *)
  1913.     MagicStrings.Assign (MTPaths.ARCPath, confInfo^.txtArray^[1]);
  1914.     MagicStrings.Append (MTPaths.ARCName, confInfo^.txtArray^[1]);
  1915.   
  1916.     translateIn (MTPaths.enarcStr, confInfo^.txtArray^[2]);
  1917.     translateIn (MTPaths.dearcStr, confInfo^.txtArray^[3]);
  1918.   
  1919.     MagicStrings.Assign (MTPaths.ImportPath, confInfo^.txtArray^[4]);
  1920.     MagicStrings.Assign (MTPaths.archiveName, confInfo^.txtArray^[5]);
  1921.     MagicStrings.Assign (MTPaths.ExportPath, confInfo^.txtArray^[6]);
  1922.     MagicStrings.Assign (MTPaths.MessagePath, confInfo^.txtArray^[7]);
  1923.     MagicStrings.Assign (MTPaths.DataPath, confInfo^.txtArray^[8]);
  1924.     MagicStrings.Assign (MTPaths.TerminalPath, confInfo^.txtArray^[9]);
  1925.     MagicStrings.Append (MTPaths.TerminalName, confInfo^.txtArray^[9]);
  1926.     translateIn (MTPaths.TerminalCmd, confInfo^.txtArray^[10]);
  1927.     (* Titel fr Fileselektor setzen *)
  1928.     MagicStrings.Assign ("Packer ausw„hlen", confInfo^.titles^[1]);
  1929.     MagicStrings.Assign ("Importpfad ausw„hlen", confInfo^.titles^[4]);
  1930.     MagicStrings.Assign ("Outfilenamen festlegen", confInfo^.titles^[5]);
  1931.     MagicStrings.Assign ("Exportpfad ausw„hlen", confInfo^.titles^[6]);
  1932.     MagicStrings.Assign ("Nachrichtenpfad ausw„hlen", confInfo^.titles^[7]);
  1933.     MagicStrings.Assign ("Databasepfad ausw„hlen", confInfo^.titles^[8]);
  1934.     MagicStrings.Assign ("Terminalprogramm ausw„hlen", confInfo^.titles^[9]);
  1935.     FOR i := MausTauschrsc.pspack TO MausTauschrsc.pscomm DO
  1936.       mtUtils.SetObjcString (tree, i, confInfo^.txtArray^[i-MausTauschrsc.pspack+1]);
  1937.     END;
  1938.   ELSE
  1939.     IF but = MausTauschrsc.pathok
  1940.     THEN
  1941.       getEdits (tree, confInfo);                   (* editables holen *)
  1942.       (* Strings bernehmen *)
  1943.       IF LENGTH (confInfo^.txtArray^[1]) > 0 THEN
  1944.         mtDir.SplitPath(confInfo^.txtArray^[1], MTPaths.ARCPath, MTPaths.ARCName, suff);
  1945.       ELSE
  1946.         MagicStrings.Assign ('', MTPaths.ARCName);
  1947.         MagicStrings.Assign ('', MTPaths.ARCPath);
  1948.       END;
  1949.       translateOut (confInfo, confInfo^.txtArray^[2], MTPaths.enarcStr);
  1950.       translateOut (confInfo, confInfo^.txtArray^[3], MTPaths.dearcStr);
  1951.       MagicStrings.Assign (confInfo^.txtArray^[4], MTPaths.ImportPath);
  1952.       MagicStrings.Assign (confInfo^.txtArray^[5], MTPaths.archiveName);
  1953.       MagicStrings.Assign (confInfo^.txtArray^[6], MTPaths.ExportPath);
  1954.       MagicStrings.Assign (confInfo^.txtArray^[7], MTPaths.MessagePath);
  1955.       MagicStrings.Assign (confInfo^.txtArray^[8], MTPaths.DataPath);
  1956.       mtDir.SplitPath(confInfo^.txtArray^[9], MTPaths.TerminalPath, MTPaths.TerminalName, suff);
  1957.       translateOut (confInfo, confInfo^.txtArray^[10], MTPaths.TerminalCmd);
  1958.     END;
  1959.     DEALLOCATE (confInfo^.titles, 0);
  1960.     DEALLOCATE (confInfo^.txtArray, 0);
  1961.     DISPOSE (confInfo);
  1962.   END;
  1963. END configGetSetValues;
  1964.  
  1965. PROCEDURE doConfig();
  1966.   VAR tree      : mtUtils.tObjcTree;
  1967.       confInfo  : configPtr;
  1968. BEGIN
  1969.   tree := MausTauschrsc.TreeAddr^[MausTauschrsc.path_cnf];
  1970.   NEW (confInfo);
  1971.   IF confInfo = NIL
  1972.   THEN
  1973.     MTE.noMemAlert();
  1974.     RETURN
  1975.   END;
  1976.   ALLOCATE (confInfo^.txtArray, TSIZE (varArray));
  1977.   IF confInfo^.txtArray = NIL
  1978.   THEN
  1979.     MTE.noMemAlert();
  1980.     DISPOSE (confInfo);
  1981.     RETURN
  1982.   END; 
  1983.   ALLOCATE (confInfo^.titles, TSIZE (titleArray));
  1984.   IF confInfo^.titles = NIL
  1985.   THEN
  1986.     MTE.noMemAlert();
  1987.     DEALLOCATE (confInfo^.txtArray, 0);
  1988.     DISPOSE (confInfo);
  1989.     RETURN
  1990.   END; 
  1991.   IF ~WinDials.OpenWinDial (tree, FALSE, 
  1992.                             configGetSetValues,
  1993.                             configGetSetValues,
  1994.                             configButton,
  1995.                             WinDials.defDraw,
  1996.                             "",
  1997.                             confInfo)
  1998.   THEN
  1999.     DEALLOCATE (confInfo^.txtArray, 0);
  2000.     DEALLOCATE (confInfo^.titles, 0);
  2001.     DISPOSE (confInfo);
  2002.     MTE.noWinDialAlert();
  2003.   END;
  2004. END doConfig;
  2005.  
  2006. TYPE formatArray =  ARRAY [1..4] OF CatTypes.String255;
  2007.      formatInfo = RECORD
  2008.                     txtArray : POINTER TO formatArray;
  2009.                     oldEntry : INTEGER;
  2010.                   END;
  2011.      formatInfoPtr = POINTER TO formatInfo;
  2012.  
  2013. PROCEDURE formatButton (tree: ADDRESS; private: ADDRESS; button: INTEGER;
  2014.                         mx, my : INTEGER; kstate: BITSET; clicks: INTEGER): BOOLEAN;
  2015.  
  2016.   VAR   but         : INTEGER;
  2017.         formInfo    : formatInfoPtr;
  2018.         ok          : BOOLEAN;
  2019. BEGIN
  2020.   formInfo := private;
  2021.   but := INTEGER(BITSET(button) - {15});
  2022.   CASE but OF
  2023.     MausTauschrsc.foinfo1..MausTauschrsc.foglobal : 
  2024.       mtUtils.ObjcString (tree, MausTauschrsc.fotxt1, formInfo^.txtArray^[formInfo^.oldEntry-MausTauschrsc.foinfo1+1]);
  2025.       mtUtils.SetObjcString (tree, MausTauschrsc.fotxt1, formInfo^.txtArray^[but-MausTauschrsc.foinfo1+1]);
  2026.       formInfo^.oldEntry   := but; 
  2027.       WinDials.WinDialDraw (tree, MausTauschrsc.fobox, 2, v.r, FALSE); |
  2028.     MausTauschrsc.fook:
  2029.       mtUtils.ObjcString (tree, MausTauschrsc.fotxt1, formInfo^.txtArray^[formInfo^.oldEntry-MausTauschrsc.foinfo1+1]);
  2030.       
  2031.       ok := CheckInfoline (formInfo^.txtArray^[1]) & CheckInfoline (formInfo^.txtArray^[2]);
  2032.       mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  2033.       IF ~ok THEN
  2034.         MTE.info ('[3][CAT:|Eine der Infozeilen|entspricht nicht der|korrekten Syntax!][[Nochmal]');
  2035.         WinDials.WinDialDraw (tree, but, 1, v.r, FALSE);
  2036.       ELSE
  2037.         ok := msgList.CheckListLine (formInfo^.txtArray^[3]) & 
  2038.               msgList.CheckListLine (formInfo^.txtArray^[4]);
  2039.         IF ~ok THEN 
  2040.           MTE.info ('[3][CAT:|Eine der Stichwortzeilen|entspricht nicht der|korrekten Syntax!][[Nochmal]');
  2041.           WinDials.WinDialDraw (tree, but, 1, v.r, FALSE);
  2042.         ELSE
  2043.           RETURN TRUE; 
  2044.         END;
  2045.       END; |
  2046.     MausTauschrsc.foquit: 
  2047.       mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  2048.       RETURN TRUE; |
  2049.     MausTauschrsc.fohelp:
  2050.       CatHelp.DoHelp (CatHelp.formats);
  2051.       mtUtils.ExclState (tree, but, MagicAES.SELECTED);
  2052.       WinDials.WinDialDraw (tree, but, 1, v.r, FALSE); |
  2053.   ELSE
  2054.   END;
  2055.   RETURN FALSE;
  2056. END formatButton;
  2057.  
  2058. PROCEDURE formatGetSetValues (tree: ADDRESS; private: ADDRESS; 
  2059.                               set: BOOLEAN; exit: INTEGER);
  2060. VAR   i         : INTEGER;
  2061.       found     : BOOLEAN;
  2062.       but       : INTEGER;
  2063.       formInfo  : formatInfoPtr;
  2064. BEGIN
  2065.   formInfo := private;
  2066.   but := INTEGER(BITSET(exit) - {15});
  2067.   IF set
  2068.   THEN
  2069.     (* Textarray fllen *)
  2070.     MagicStrings.Assign(UserInformation.UserBLK.infoline1, formInfo^.txtArray^[1]);
  2071.     MagicStrings.Assign(UserInformation.UserBLK.infoline2, formInfo^.txtArray^[2]);
  2072.     ConfVars.GetConfDefStr (cPrivateLine, formInfo^.txtArray^[3], CatTypes.cPrivateDefault);
  2073.     ConfVars.GetConfDefStr (cGlobalLine, formInfo^.txtArray^[4], CatTypes.cGlobalDefault);
  2074.     (* Selektierten Eintrag feststellen *)
  2075.     i := MausTauschrsc.foinfo1;
  2076.     found := FALSE;
  2077.     WHILE ~found & (i <= MausTauschrsc.foglobal) DO
  2078.       found := mtUtils.InState (tree, i, MagicAES.SELECTED);
  2079.       IF ~found THEN INC (i); END;
  2080.     END;
  2081.     IF ~found THEN 
  2082.       i := MausTauschrsc.foinfo1; 
  2083.       mtUtils.InclState (tree, i, MagicAES.SELECTED); 
  2084.     END;
  2085.     formInfo^.oldEntry := i;
  2086.     mtUtils.SetObjcString (tree, MausTauschrsc.fotxt1, formInfo^.txtArray^[i-MausTauschrsc.foinfo1+1]);
  2087.   ELSE
  2088.     IF but = MausTauschrsc.fook
  2089.     THEN
  2090.       MagicStrings.Assign(formInfo^.txtArray^[1], UserInformation.UserBLK.infoline1);
  2091.       MagicStrings.Assign(formInfo^.txtArray^[2], UserInformation.UserBLK.infoline2);
  2092.       v.bool := ConfVars.SetConfigString (cInfoline1, formInfo^.txtArray^[1]);
  2093.       v.bool := ConfVars.SetConfigString (cInfoline2, formInfo^.txtArray^[2]);
  2094.       v.bool := ConfVars.SetConfigString (cPrivateLine, formInfo^.txtArray^[3]);
  2095.       v.bool := ConfVars.SetConfigString (cGlobalLine, formInfo^.txtArray^[4]);
  2096.       msgList.SetListLine (formInfo^.txtArray^[3], TRUE);
  2097.       msgList.SetListLine (formInfo^.txtArray^[4], FALSE);
  2098.     END;
  2099.     DEALLOCATE (formInfo^.txtArray, 0);
  2100.     DISPOSE (formInfo);
  2101.   END;
  2102. END formatGetSetValues;
  2103.  
  2104. PROCEDURE doFormat ();
  2105. VAR   tree      : mtUtils.tObjcTree;
  2106.       formInfo  : formatInfoPtr;
  2107. BEGIN
  2108.   tree := MausTauschrsc.TreeAddr^[MausTauschrsc.form_cnf];
  2109.   NEW (formInfo);
  2110.   IF formInfo = NIL
  2111.   THEN
  2112.     MTE.noMemAlert();
  2113.     RETURN
  2114.   END; 
  2115.   ALLOCATE (formInfo^.txtArray, TSIZE (formatArray));
  2116.   IF formInfo^.txtArray = NIL
  2117.   THEN
  2118.     MTE.noMemAlert();
  2119.     DISPOSE (formInfo);
  2120.     RETURN
  2121.   END; 
  2122.   IF ~WinDials.OpenWinDial (tree, FALSE, 
  2123.                             formatGetSetValues,
  2124.                             formatGetSetValues,
  2125.                             formatButton,
  2126.                             WinDials.defDraw,
  2127.                             "",
  2128.                             formInfo)
  2129.   THEN
  2130.     DISPOSE (formInfo);
  2131.     MTE.noWinDialAlert();
  2132.   END;
  2133. END doFormat;
  2134.  
  2135. END CatOpts.
  2136.